diff --git a/.gitignore b/.gitignore index 5bd85daa..9a648776 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ Publish/ /Samples/UnrealEnginePlugin/Binaries /.vs /samples/UnrealEnginePlugin/GUI/Optick.exe +.idea/ \ No newline at end of file diff --git a/gui/AutoEmbedLibs/SharpDX.D3DCompiler.dll b/gui/AutoEmbedLibs/SharpDX.D3DCompiler.dll deleted file mode 100644 index 682dffbb..00000000 Binary files a/gui/AutoEmbedLibs/SharpDX.D3DCompiler.dll and /dev/null differ diff --git a/gui/AutoEmbedLibs/SharpDX.DXGI.dll b/gui/AutoEmbedLibs/SharpDX.DXGI.dll deleted file mode 100644 index b2916cd6..00000000 Binary files a/gui/AutoEmbedLibs/SharpDX.DXGI.dll and /dev/null differ diff --git a/gui/AutoEmbedLibs/SharpDX.Direct2D1.dll b/gui/AutoEmbedLibs/SharpDX.Direct2D1.dll deleted file mode 100644 index ff7ab19b..00000000 Binary files a/gui/AutoEmbedLibs/SharpDX.Direct2D1.dll and /dev/null differ diff --git a/gui/AutoEmbedLibs/SharpDX.Direct3D11.dll b/gui/AutoEmbedLibs/SharpDX.Direct3D11.dll deleted file mode 100644 index ae4a8c20..00000000 Binary files a/gui/AutoEmbedLibs/SharpDX.Direct3D11.dll and /dev/null differ diff --git a/gui/AutoEmbedLibs/SharpDX.dll b/gui/AutoEmbedLibs/SharpDX.dll deleted file mode 100644 index 6a239489..00000000 Binary files a/gui/AutoEmbedLibs/SharpDX.dll and /dev/null differ diff --git a/gui/AutoEmbedLibs/System.Windows.Interactivity.dll b/gui/AutoEmbedLibs/System.Windows.Interactivity.dll deleted file mode 100644 index 931c744c..00000000 Binary files a/gui/AutoEmbedLibs/System.Windows.Interactivity.dll and /dev/null differ diff --git a/gui/InteractiveDataDisplay.WPF/InteractiveDataDisplay.WPF.csproj b/gui/InteractiveDataDisplay.WPF/InteractiveDataDisplay.WPF.csproj index da9eb9b6..a7175145 100644 --- a/gui/InteractiveDataDisplay.WPF/InteractiveDataDisplay.WPF.csproj +++ b/gui/InteractiveDataDisplay.WPF/InteractiveDataDisplay.WPF.csproj @@ -1,77 +1,26 @@ - - - - - Debug - AnyCPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82} - Library - Properties - InteractiveDataDisplay.WPF - InteractiveDataDisplay.WPF - net452;net46 - 512 - - - - true - full - false - bin\Debug\ - TRACE;DEBUG;NETFRAMEWORK;NETFRAMEWORK; - prompt - 4 - true - - - pdbonly - true - bin\Release\ - TRACE;RELEASE;NETFRAMEWORK;;RELEASE;NETFRAMEWORK;RELEASE;NETFRAMEWORK; - prompt - 4 - true - - - $(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets - 1.1.0 - Microsoft; MSU ITIS Lab - Sergey Berezin, Vassily Lyutsarev, Nikita Skoblov, Natalia Stepanova - Interactive Data Display for WPF is a set of controls for adding interactive visualization of dynamic data to your application. - Copyright 2017 Microsoft Corporation - idd wpf visualization plot plots plotting chart charting data interactive datavisualization - https://github.com/Microsoft/InteractiveDataDisplay.WPF - https://github.com/Microsoft/InteractiveDataDisplay.WPF/blob/master/LICENSE - + + + + Library + net472 + true + true + + + 1.1.0 + Microsoft; MSU ITIS Lab + Sergey Berezin, Vassily Lyutsarev, Nikita Skoblov, Natalia Stepanova + Interactive Data Display for WPF is a set of controls for adding interactive visualization of dynamic data to your application. + Copyright 2017 Microsoft Corporation + idd wpf visualization plot plots plotting chart charting data interactive datavisualization + https://github.com/Microsoft/InteractiveDataDisplay.WPF + https://github.com/Microsoft/InteractiveDataDisplay.WPF/blob/master/LICENSE + CS0108 - - - - - - - - - - - - - - - - - - - - Designer - MSBuild:Compile - - - - - - - - + + + + + \ No newline at end of file diff --git a/gui/Optick/App.xaml.cs b/gui/Optick/App.xaml.cs index 2ade8441..1d6c56e7 100644 --- a/gui/Optick/App.xaml.cs +++ b/gui/Optick/App.xaml.cs @@ -1,27 +1,26 @@ -using System; -using System.Windows; -using System.Reflection; -using System.IO; -using System.Diagnostics; -using Sentry; - -namespace Profiler -{ - /// - /// Interaction logic for App.xaml - /// - public partial class App : Application - { - - static App() - { - - } - - protected override void OnStartup(StartupEventArgs e) - { +using System; +using System.Windows; +using System.Reflection; +using System.IO; +using System.Diagnostics; + +namespace Profiler +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + + static App() + { + + } + + protected override void OnStartup(StartupEventArgs e) + { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; - base.OnStartup(e); + base.OnStartup(e); } private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) @@ -41,16 +40,9 @@ bool ReportError(Exception ex) while (rootException.InnerException != null) rootException = rootException.InnerException; - - if (MessageBox.Show("Unhandled Exception:\n" + rootException.ToString(), "Optick Crashed! Send report?", MessageBoxButton.OKCancel, MessageBoxImage.Error) == MessageBoxResult.OK) - { - using (SentrySdk.Init("https://52c8ab53c0cf47f28263fc211ebd4d38@sentry.io/1493349")) - { - SentrySdk.CaptureException(rootException); - } - return true; - } + + MessageBox.Show(rootException.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return false; } - } -} + } +} diff --git a/gui/Optick/Optick.csproj b/gui/Optick/Optick.csproj index e8230a0e..1f70f35d 100644 --- a/gui/Optick/Optick.csproj +++ b/gui/Optick/Optick.csproj @@ -1,512 +1,15 @@ - - - + - Debug - AnyCPU - 8.0.30703 - 2.0 - {97F462A6-7E81-4AD1-AE48-602F79F70169} + net472 WinExe - Properties Profiler - Optick - v4.6.2 - - - 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Resources\icon.ico - true - 4.0.20525.0 - false - - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.1.0.%2a - false - true + true + false - - true - full - false - ..\Bin\Debug\ - TRACE;DEBUG;NDA_CODE_SECTION - prompt - 4 - x86 - true - 1668 - false - - - pdbonly - true - ..\Bin\Release\ - TRACE;NDA_CODE_SECTION - prompt - 4 - 1668 - false - - - true - ..\Bin\Debug\x64\ - TRACE;DEBUG;NDA_CODE_SECTION - full - x64 - prompt - true - true - false - 1668 - false - - - ..\Bin\Release\x64\ - TRACE;NDA_CODE_SECTION - true - pdbonly - x64 - prompt - true - true - false - - - true - ..\Bin\Debug\Win32\ - TRACE;DEBUG;NDA_CODE_SECTION - full - x86 - prompt - false - false - false - true - 1668 - false - false - - - ..\Bin\Release\Win32\ - TRACE;NDA_CODE_SECTION - true - pdbonly - x86 - prompt - false - false - false - true - 1668 - false - false - - - true - - - - - - - - - ..\packages\Autofac.4.8.1\lib\net45\Autofac.dll - - - ..\packages\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll - - - ..\packages\Costura.Fody.3.3.3\lib\net40\Costura.dll - - - ..\packages\Google.Apis.1.37.0\lib\net45\Google.Apis.dll - - - ..\packages\Google.Apis.Auth.1.37.0\lib\net45\Google.Apis.Auth.dll - - - ..\packages\Google.Apis.Auth.1.37.0\lib\net45\Google.Apis.Auth.PlatformServices.dll - - - ..\packages\Google.Apis.Core.1.37.0\lib\net45\Google.Apis.Core.dll - - - ..\packages\Google.Apis.Drive.v3.1.37.0.1470\lib\net45\Google.Apis.Drive.v3.dll - - - ..\packages\Google.Apis.1.37.0\lib\net45\Google.Apis.PlatformServices.dll - - - False - ..\AutoEmbedLibs\ICSharpCode.AvalonEdit.dll - True - - - ..\packages\LiveCharts.0.9.7\lib\net45\LiveCharts.dll - - - ..\packages\LiveCharts.Wpf.0.9.7\lib\net45\LiveCharts.Wpf.dll - - - ..\packages\MahApps.Metro.1.6.5\lib\net46\MahApps.Metro.dll - - - ..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll - - - ..\packages\Sentry.1.2.0\lib\net461\Sentry.dll - - - ..\packages\Sentry.PlatformAbstractions.1.0.0\lib\net45\Sentry.PlatformAbstractions.dll - - - ..\packages\Sentry.Protocol.1.0.6\lib\net46\Sentry.Protocol.dll - - - ..\AutoEmbedLibs\SharpDX.dll - - - ..\AutoEmbedLibs\SharpDX.D3DCompiler.dll - - - ..\AutoEmbedLibs\SharpDX.Direct2D1.dll - - - ..\AutoEmbedLibs\SharpDX.Direct3D11.dll - - - ..\AutoEmbedLibs\SharpDX.DXGI.dll - - - - ..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll - - - - - - - - - ..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll - True - True - - - - - - - - ..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll - - - - - - - - 4.0 - - - - - - - - ..\packages\Dirkster.AvalonDock.Themes.VS2013.3.5.0.2\lib\net4\Xceed.Wpf.AvalonDock.dll - - - ..\packages\Dirkster.AvalonDock.Themes.VS2013.3.5.0.2\lib\net4\Xceed.Wpf.AvalonDock.Themes.VS2013.dll - - - - - MSBuild:Compile - Designer - - - - AttachmentViewControl.xaml - - - EditStorageListDialog.xaml - - - EditTaskTrackerListDialog.xaml - - - CaptureStats.xaml - - - CaptureThumbnail.xaml - - - FileHistory.xaml - - - FrameCapture.xaml - - - FunctionSearch.xaml - - - - SettingsControl.xaml - - - - TagsControl.xaml - - - SearchBox.xaml - - - - - - - - - - - AddressBarView.xaml - - - CaptureSettingsView.xaml - - - FunctionDescriptionView.xaml - - - FunctionHistoryTableView.xaml - - - FunctionHistoryChartView.xaml - - - FunctionInstanceView.xaml - - - FunctionSummaryView.xaml - - - ScreenShotView.xaml - - - SummaryViewer.xaml - - - - - - FrameDataTable.xaml - - - SourceViewControl.xaml - - - - - FrameInfo.xaml - - - SourceWindow.xaml - - - TimeLine.xaml - - - TimeLineItem.xaml - - - TaskTrackerView.xaml - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - App.xaml - Code - - - MainView.xaml - Code - - - MSBuild:Compile - Designer - true - - - MSBuild:Compile - Designer - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - Designer - MSBuild:Compile - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - - - Code - - - True - True - Resources.resx - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - @@ -519,88 +22,31 @@ - - - - False - Microsoft .NET Framework 4 Client Profile %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 3.1 - true - - - - - - - - - - - - - - - - - + + - + + + + + - + + - - {2d34544c-2df2-4b20-a43a-6c8d2df3dd82} - InteractiveDataDisplay.WPF - - - {2b515f9a-27ed-4a0f-85f1-2e73b838bd81} - Profiler.Controls - - - {37d3fa6a-86fa-43b2-8a4f-681daa3c5e63} - Profiler.Data - - - {e86c057e-e135-4100-a4a4-c943c7f14c56} - Profiler.DirectX - - - {65cae3b7-6ea5-4fa4-8e83-4128ff73a40d} - Profiler.InfrastructureMvvm - + + ..\AutoEmbedLibs\ICSharpCode.AvalonEdit.dll + - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - \ No newline at end of file diff --git a/gui/Optick/TaskManager/AttachmentStorage.cs b/gui/Optick/TaskManager/AttachmentStorage.cs index 101a894e..779f2f3a 100644 --- a/gui/Optick/TaskManager/AttachmentStorage.cs +++ b/gui/Optick/TaskManager/AttachmentStorage.cs @@ -1,8 +1,4 @@ -using Google.Apis.Auth.OAuth2; -using Google.Apis.Drive.v3; -using Google.Apis.Drive.v3.Data; -using Google.Apis.Services; -using Profiler.Data; +using Profiler.Data; using System; using System.Collections.Generic; using System.Diagnostics; @@ -25,117 +21,6 @@ public abstract class ExternalStorage public abstract Uri UploadFile(String name, System.IO.Stream data, Action onProgress, CancellationToken token); } - class GDriveStorage : ExternalStorage - { - public override string DisplayName => "Public Google Drive Storage (Optick)"; - public override string Icon => "appbar_google"; - public override bool IsPublic => true; - - const string SERVICE_ACCOUNT_EMAIL = "upload@brofiler-github.iam.gserviceaccount.com"; - const string KEY_RESOURCE_NAME = "Profiler.TaskManager.brofiler-github-07994fd14248.p12"; - - private DriveService Connect() - { - Assembly assembly = Assembly.GetExecutingAssembly(); - using (System.IO.Stream stream = assembly.GetManifestResourceStream(KEY_RESOURCE_NAME)) - { - string[] scopes = new string[] { DriveService.Scope.Drive }; - - byte[] key = new byte[stream.Length]; - stream.Read(key, 0, (int)stream.Length); - - var certificate = new X509Certificate2(key, "notasecret", X509KeyStorageFlags.Exportable); - var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(SERVICE_ACCOUNT_EMAIL) - { - Scopes = scopes - }.FromCertificate(certificate)); - - return new DriveService(new BaseClientService.Initializer() - { - HttpClientInitializer = credential, - ApplicationName = "Optick Github Sample", - }); - } - } - - private static string GetMimeType(string fileName) - { - string mimeType = "application/unknown"; - string ext = System.IO.Path.GetExtension(fileName).ToLower(); - Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext); - if (regKey != null && regKey.GetValue("Content Type") != null) - mimeType = regKey.GetValue("Content Type").ToString(); - return mimeType; - } - - private String UploadFile(DriveService service, String name, System.IO.Stream stream, Action onProgress, CancellationToken token) - { - File body = new File(); - body.Name = System.IO.Path.GetFileName(name); - body.Description = "File uploaded by Optick"; - body.MimeType = GetMimeType(name); - - // File's content. - System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); - stream.Position = 0; - stream.CopyTo(memoryStream); - memoryStream.Position = 0; - - try - { - var uploadRequest = service.Files.Create(body, memoryStream, GetMimeType(name)); - uploadRequest.ProgressChanged += (p) => onProgress?.Invoke((double)p.BytesSent / stream.Length); - uploadRequest.Fields = "id"; - uploadRequest.ChunkSize = Google.Apis.Upload.ResumableUpload.MinimumChunkSize; - uploadRequest.UploadAsync(token).Wait(token); - - String fileId = uploadRequest.ResponseBody.Id; - - Permission userPermission = new Permission() - { - Type = "anyone", - Role = "reader", - AllowFileDiscovery = false, - }; - var permissionsRequest = service.Permissions.Create(userPermission, fileId); - permissionsRequest.Execute(); - - //Permission domainPermission = new Permission() - //{ - // Type = "domain", - // Role = "reader", - - //}; - //permissionsRequest = service.Permissions.Create(domainPermission, fileId); - //permissionsRequest.Execute(); - - return fileId; - - } - catch (Exception e) - { - Debug.WriteLine("An error occurred: " + e.Message); - return null; - } - } - - public override Uri UploadFile(String name, System.IO.Stream data, Action onProgress, CancellationToken token) - { - DriveService service = Connect(); - - if (service != null) - { - String fileId = UploadFile(service, name, data, onProgress, token); - if (!String.IsNullOrEmpty(fileId)) - { - return new Uri("https://drive.google.com/uc?id=" + fileId); - } - } - - return null; - } - } - class NetworkStorage : ExternalStorage { public String UploadURL { get; set; } diff --git a/gui/Optick/ViewModels/TaskTrackerViewModel.cs b/gui/Optick/ViewModels/TaskTrackerViewModel.cs index 66d37ab9..44fe094e 100644 --- a/gui/Optick/ViewModels/TaskTrackerViewModel.cs +++ b/gui/Optick/ViewModels/TaskTrackerViewModel.cs @@ -397,8 +397,6 @@ private void LoadStorages() Storages.Add(new NetworkStorage(storage.UploadURL, storage.DownloadURL)); } - Storages.Add(new GDriveStorage()); - var targetStorage = Settings.GlobalSettings.Data.ActiveStorage; if (!String.IsNullOrEmpty(targetStorage)) { diff --git a/gui/Optick/themes/Controls.xaml b/gui/Optick/themes/Controls.xaml index 1aff6421..ca5a9124 100644 --- a/gui/Optick/themes/Controls.xaml +++ b/gui/Optick/themes/Controls.xaml @@ -1,65 +1,65 @@ - - - Segoe UI, Lucida Sans Unicode, Verdana - 12 - 14 - - 22 - - - - - - - - - - + xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"> + + Segoe UI, Lucida Sans Unicode, Verdana + 12 + 14 + + 22 + + + + + + + + + + - + + - + + + Style="{TemplateBinding ButtonStyle}"> @@ -193,6 +193,6 @@ - - - + + + diff --git a/gui/OptickApp_vs2019.sln b/gui/OptickApp.sln similarity index 87% rename from gui/OptickApp_vs2019.sln rename to gui/OptickApp.sln index aa8e71f5..992783b5 100644 --- a/gui/OptickApp_vs2019.sln +++ b/gui/OptickApp.sln @@ -1,206 +1,185 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29306.81 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Optick", "Optick\Optick.csproj", "{97F462A6-7E81-4AD1-AE48-602F79F70169}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InteractiveDataDisplay.WPF", "InteractiveDataDisplay.WPF\InteractiveDataDisplay.WPF.csproj", "{2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Data", "Profiler.Data\Profiler.Data.csproj", "{37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.DirectX", "Profiler.DirectX\Profiler.DirectX.csproj", "{E86C057E-E135-4100-A4A4-C943C7F14C56}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "Profiler.Controls\Profiler.Controls.csproj", "{2B515F9A-27ED-4A0F-85F1-2E73B838BD81}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.InfrastructureMvvm", "Profiler.InfrastructureMvvm\Profiler.InfrastructureMvvm.csproj", "{65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rdParty", "3rdParty", "{506CD129-58AC-44C4-985B-EF2674F5E621}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VisualStudio", "VisualStudio", "{DD04DE5C-268D-4308-B672-1AFAF6F9F814}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiler", "Profiler", "{91A707F9-30C7-40F9-9A26-16A127E7D3BB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OptickVSIX", "OptickVSIX\OptickVSIX.csproj", "{DFFEC445-0F80-4B7D-8305-58229FE40875}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GUI", "GUI", "{B5FF9893-988C-44E9-A01C-AC80EF776423}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Interop", "Profiler.Interop\Profiler.Interop.csproj", "{168EFEDE-D263-41C7-8839-07CFA7815AC0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Trace", "Profiler.Trace\Profiler.Trace.csproj", "{9ADF36AE-023D-4D81-A13C-9A18A9E84359}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Any CPU.Build.0 = Debug|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x64.ActiveCfg = Debug|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x64.Build.0 = Debug|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x86.ActiveCfg = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x86.Build.0 = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Any CPU.ActiveCfg = Release|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Any CPU.Build.0 = Release|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Mixed Platforms.Build.0 = Release|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x64.ActiveCfg = Release|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x64.Build.0 = Release|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x86.ActiveCfg = Release|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x86.Build.0 = Release|x86 - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x64.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x64.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x86.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x86.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Any CPU.Build.0 = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x64.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x64.Build.0 = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x86.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x86.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Any CPU.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x64.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x64.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x86.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x86.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Any CPU.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Any CPU.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x64.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x64.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x86.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x86.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x64.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x64.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x86.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x86.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Any CPU.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x64.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x64.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x86.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x86.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x64.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x64.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x86.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x86.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Any CPU.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x64.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x64.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x86.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x86.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x64.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x64.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x86.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x86.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Any CPU.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x64.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x64.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x86.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x86.Build.0 = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|x64.ActiveCfg = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|x64.Build.0 = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|x86.ActiveCfg = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Debug|x86.Build.0 = Debug|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|Any CPU.Build.0 = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|x64.ActiveCfg = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|x64.Build.0 = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|x86.ActiveCfg = Release|Any CPU - {DFFEC445-0F80-4B7D-8305-58229FE40875}.Release|x86.Build.0 = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x64.ActiveCfg = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x64.Build.0 = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x86.ActiveCfg = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x86.Build.0 = Debug|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Any CPU.Build.0 = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x64.ActiveCfg = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x64.Build.0 = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x86.ActiveCfg = Release|Any CPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x86.Build.0 = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x64.ActiveCfg = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x64.Build.0 = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x86.ActiveCfg = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x86.Build.0 = Debug|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Any CPU.Build.0 = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x64.ActiveCfg = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x64.Build.0 = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x86.ActiveCfg = Release|Any CPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {97F462A6-7E81-4AD1-AE48-602F79F70169} = {B5FF9893-988C-44E9-A01C-AC80EF776423} - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82} = {506CD129-58AC-44C4-985B-EF2674F5E621} - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} - {E86C057E-E135-4100-A4A4-C943C7F14C56} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} - {DFFEC445-0F80-4B7D-8305-58229FE40875} = {DD04DE5C-268D-4308-B672-1AFAF6F9F814} - {168EFEDE-D263-41C7-8839-07CFA7815AC0} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} - {9ADF36AE-023D-4D81-A13C-9A18A9E84359} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0027C542-8519-493E-8ACA-88E03B35ACB8} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29306.81 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Optick", "Optick\Optick.csproj", "{97F462A6-7E81-4AD1-AE48-602F79F70169}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InteractiveDataDisplay.WPF", "InteractiveDataDisplay.WPF\InteractiveDataDisplay.WPF.csproj", "{2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Data", "Profiler.Data\Profiler.Data.csproj", "{37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.DirectX", "Profiler.DirectX\Profiler.DirectX.csproj", "{E86C057E-E135-4100-A4A4-C943C7F14C56}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "Profiler.Controls\Profiler.Controls.csproj", "{2B515F9A-27ED-4A0F-85F1-2E73B838BD81}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.InfrastructureMvvm", "Profiler.InfrastructureMvvm\Profiler.InfrastructureMvvm.csproj", "{65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rdParty", "3rdParty", "{506CD129-58AC-44C4-985B-EF2674F5E621}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiler", "Profiler", "{91A707F9-30C7-40F9-9A26-16A127E7D3BB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GUI", "GUI", "{B5FF9893-988C-44E9-A01C-AC80EF776423}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Interop", "Profiler.Interop\Profiler.Interop.csproj", "{168EFEDE-D263-41C7-8839-07CFA7815AC0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Trace", "Profiler.Trace\Profiler.Trace.csproj", "{9ADF36AE-023D-4D81-A13C-9A18A9E84359}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Any CPU.Build.0 = Debug|Any CPU + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x64.ActiveCfg = Debug|x64 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x64.Build.0 = Debug|x64 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x86.ActiveCfg = Debug|x86 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x86.Build.0 = Debug|x86 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Any CPU.ActiveCfg = Release|Any CPU + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Any CPU.Build.0 = Release|Any CPU + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Mixed Platforms.Build.0 = Release|x86 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x64.ActiveCfg = Release|x64 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x64.Build.0 = Release|x64 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x86.ActiveCfg = Release|x86 + {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x86.Build.0 = Release|x86 + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x64.ActiveCfg = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x64.Build.0 = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x86.ActiveCfg = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x86.Build.0 = Debug|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Any CPU.Build.0 = Release|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x64.ActiveCfg = Release|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x64.Build.0 = Release|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x86.ActiveCfg = Release|Any CPU + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x86.Build.0 = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x64.ActiveCfg = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x64.Build.0 = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x86.ActiveCfg = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x86.Build.0 = Debug|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Any CPU.Build.0 = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x64.ActiveCfg = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x64.Build.0 = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x86.ActiveCfg = Release|Any CPU + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x86.Build.0 = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x64.ActiveCfg = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x64.Build.0 = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x86.ActiveCfg = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x86.Build.0 = Debug|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Any CPU.Build.0 = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x64.ActiveCfg = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x64.Build.0 = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x86.ActiveCfg = Release|Any CPU + {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x86.Build.0 = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x64.ActiveCfg = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x64.Build.0 = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x86.ActiveCfg = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x86.Build.0 = Debug|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Any CPU.Build.0 = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x64.ActiveCfg = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x64.Build.0 = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x86.ActiveCfg = Release|Any CPU + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x86.Build.0 = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x64.ActiveCfg = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x64.Build.0 = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x86.ActiveCfg = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x86.Build.0 = Debug|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Any CPU.Build.0 = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x64.ActiveCfg = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x64.Build.0 = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x86.ActiveCfg = Release|Any CPU + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x86.Build.0 = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x64.ActiveCfg = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x64.Build.0 = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x86.ActiveCfg = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Debug|x86.Build.0 = Debug|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Any CPU.Build.0 = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x64.ActiveCfg = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x64.Build.0 = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x86.ActiveCfg = Release|Any CPU + {168EFEDE-D263-41C7-8839-07CFA7815AC0}.Release|x86.Build.0 = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x64.ActiveCfg = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x64.Build.0 = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x86.ActiveCfg = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Debug|x86.Build.0 = Debug|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Any CPU.Build.0 = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x64.ActiveCfg = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x64.Build.0 = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x86.ActiveCfg = Release|Any CPU + {9ADF36AE-023D-4D81-A13C-9A18A9E84359}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {97F462A6-7E81-4AD1-AE48-602F79F70169} = {B5FF9893-988C-44E9-A01C-AC80EF776423} + {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82} = {506CD129-58AC-44C4-985B-EF2674F5E621} + {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} + {E86C057E-E135-4100-A4A4-C943C7F14C56} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} + {2B515F9A-27ED-4A0F-85F1-2E73B838BD81} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} + {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} + {168EFEDE-D263-41C7-8839-07CFA7815AC0} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} + {9ADF36AE-023D-4D81-A13C-9A18A9E84359} = {91A707F9-30C7-40F9-9A26-16A127E7D3BB} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0027C542-8519-493E-8ACA-88E03B35ACB8} + EndGlobalSection +EndGlobal diff --git a/gui/OptickApp_vs2017.sln b/gui/OptickApp_vs2017.sln deleted file mode 100644 index 8521006d..00000000 --- a/gui/OptickApp_vs2017.sln +++ /dev/null @@ -1,135 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.12 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Optick", "Optick\Optick.csproj", "{97F462A6-7E81-4AD1-AE48-602F79F70169}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4164CD29-B7C4-47BF-9F75-A8D5BF59CCA4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InteractiveDataDisplay.WPF", "InteractiveDataDisplay.WPF\InteractiveDataDisplay.WPF.csproj", "{2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Data", "Profiler.Data\Profiler.Data.csproj", "{37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.DirectX", "Profiler.DirectX\Profiler.DirectX.csproj", "{E86C057E-E135-4100-A4A4-C943C7F14C56}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "Profiler.Controls\Profiler.Controls.csproj", "{2B515F9A-27ED-4A0F-85F1-2E73B838BD81}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.InfrastructureMvvm", "Profiler.InfrastructureMvvm\Profiler.InfrastructureMvvm.csproj", "{65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Any CPU.Build.0 = Debug|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x64.ActiveCfg = Debug|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x64.Build.0 = Debug|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x86.ActiveCfg = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Debug|x86.Build.0 = Debug|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Any CPU.ActiveCfg = Release|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Any CPU.Build.0 = Release|Any CPU - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|Mixed Platforms.Build.0 = Release|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x64.ActiveCfg = Release|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x64.Build.0 = Release|x64 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x86.ActiveCfg = Release|x86 - {97F462A6-7E81-4AD1-AE48-602F79F70169}.Release|x86.Build.0 = Release|x86 - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x64.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x64.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x86.ActiveCfg = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Debug|x86.Build.0 = Debug|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Any CPU.Build.0 = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x64.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x64.Build.0 = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x86.ActiveCfg = Release|Any CPU - {2D34544C-2DF2-4B20-A43A-6C8D2DF3DD82}.Release|x86.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Any CPU.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x64.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x64.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x86.ActiveCfg = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Debug|x86.Build.0 = Debug|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Any CPU.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Any CPU.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x64.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x64.Build.0 = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x86.ActiveCfg = Release|Any CPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63}.Release|x86.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x64.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x64.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x86.ActiveCfg = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Debug|x86.Build.0 = Debug|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Any CPU.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x64.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x64.Build.0 = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x86.ActiveCfg = Release|Any CPU - {E86C057E-E135-4100-A4A4-C943C7F14C56}.Release|x86.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x64.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x64.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x86.ActiveCfg = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Debug|x86.Build.0 = Debug|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Any CPU.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x64.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x64.Build.0 = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x86.ActiveCfg = Release|Any CPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81}.Release|x86.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x64.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x64.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x86.ActiveCfg = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Debug|x86.Build.0 = Debug|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Any CPU.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x64.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x64.Build.0 = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x86.ActiveCfg = Release|Any CPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0027C542-8519-493E-8ACA-88E03B35ACB8} - EndGlobalSection -EndGlobal diff --git a/gui/Profiler.Controls/Profiler.Controls.csproj b/gui/Profiler.Controls/Profiler.Controls.csproj index 091c05a5..f913aa7e 100644 --- a/gui/Profiler.Controls/Profiler.Controls.csproj +++ b/gui/Profiler.Controls/Profiler.Controls.csproj @@ -1,157 +1,26 @@ - - - + - Debug - AnyCPU - {2B515F9A-27ED-4A0F-85F1-2E73B838BD81} + net472 Library - Properties - Profiler.Controls - Profiler.Controls - v4.6.2 - 512 - true + false + true + true - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\ControlzEx.3.0.2.4\lib\net462\ControlzEx.dll - - - ..\AutoEmbedLibs\ICSharpCode.AvalonEdit.dll - - - ..\packages\MahApps.Metro.1.6.5\lib\net46\MahApps.Metro.dll - - - - - False - ..\AutoEmbedLibs\SharpDX.dll - - - False - ..\AutoEmbedLibs\SharpDX.Direct3D11.dll - - - False - ..\AutoEmbedLibs\SharpDX.DXGI.dll - - - - - - - - - ..\packages\ControlzEx.3.0.2.4\lib\net462\System.Windows.Interactivity.dll - - - - - - - - - - - - - - - - FunctionSearch.xaml - - - - - - - EventThreadView.xaml - - - - SamplingThreadView.xaml - - - ThreadNameView.xaml - - - - ThreadViewControl.xaml - - - - - - ThreadFilterView.xaml - + + + - - {37d3fa6a-86fa-43b2-8a4f-681daa3c5e63} - Profiler.Data - - - {e86c057e-e135-4100-a4a4-c943c7f14c56} - Profiler.DirectX - - - {65cae3b7-6ea5-4fa4-8e83-4128ff73a40d} - Profiler.InfrastructureMvvm - + - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - + + - + + ..\AutoEmbedLibs\ICSharpCode.AvalonEdit.dll + - - \ No newline at end of file diff --git a/gui/Profiler.Data/Profiler.Data.csproj b/gui/Profiler.Data/Profiler.Data.csproj index 0a1f9d2b..335ade0e 100644 --- a/gui/Profiler.Data/Profiler.Data.csproj +++ b/gui/Profiler.Data/Profiler.Data.csproj @@ -1,77 +1,11 @@ - - - + - Debug - AnyCPU - {37D3FA6A-86FA-43B2-8A4F-681DAA3C5E63} + net472 Library - Properties - Profiler.Data - Profiler.Data - v4.6.2 - 512 - true + false + true - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - \ No newline at end of file diff --git a/gui/Profiler.Data/packages.config b/gui/Profiler.Data/packages.config deleted file mode 100644 index d65db03d..00000000 --- a/gui/Profiler.Data/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/gui/Profiler.DirectX/Profiler.DirectX.csproj b/gui/Profiler.DirectX/Profiler.DirectX.csproj index 4176246b..cf4811f7 100644 --- a/gui/Profiler.DirectX/Profiler.DirectX.csproj +++ b/gui/Profiler.DirectX/Profiler.DirectX.csproj @@ -1,112 +1,21 @@ - - - + - Debug - AnyCPU - {E86C057E-E135-4100-A4A4-C943C7F14C56} + net472 Library - Properties - Profiler.DirectX - Profiler.DirectX - v4.6.2 - 512 - true + false + true + true - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - ..\AutoEmbedLibs\SharpDX.dll - - - ..\AutoEmbedLibs\SharpDX.D3DCompiler.dll - - - ..\AutoEmbedLibs\SharpDX.Direct2D1.dll - - - ..\AutoEmbedLibs\SharpDX.Direct3D11.dll - - - ..\AutoEmbedLibs\SharpDX.DXGI.dll - - - - - - - - - - - - - - - - - - - - DirectXCanvas.xaml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -115,20 +24,17 @@ - - - - - - - MSBuild:Compile - Designer - + + + + + + + - \ No newline at end of file diff --git a/gui/Profiler.InfrastructureMvvm/Profiler.InfrastructureMvvm.csproj b/gui/Profiler.InfrastructureMvvm/Profiler.InfrastructureMvvm.csproj index 0ccbf712..0bc3177c 100644 --- a/gui/Profiler.InfrastructureMvvm/Profiler.InfrastructureMvvm.csproj +++ b/gui/Profiler.InfrastructureMvvm/Profiler.InfrastructureMvvm.csproj @@ -1,91 +1,15 @@ - - - + - Debug - AnyCPU - {65CAE3B7-6EA5-4FA4-8E83-4128FF73A40D} + net472 Library - Properties - Profiler.InfrastructureMvvm - Profiler.InfrastructureMvvm - v4.6.2 - 512 - true + false + true + true + true - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Autofac.4.8.1\lib\net45\Autofac.dll - - - ..\packages\ControlzEx.3.0.2.4\lib\net462\ControlzEx.dll - True - - - ..\packages\MahApps.Metro.1.6.5\lib\net46\MahApps.Metro.dll - True - - - - - - - - - ..\packages\ControlzEx.3.0.2.4\lib\net462\System.Windows.Interactivity.dll - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - \ No newline at end of file diff --git a/gui/Profiler.InfrastructureMvvm/packages.config b/gui/Profiler.InfrastructureMvvm/packages.config deleted file mode 100644 index ec7c09b3..00000000 --- a/gui/Profiler.InfrastructureMvvm/packages.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/gui/Profiler.Interop/Profiler.Interop.csproj b/gui/Profiler.Interop/Profiler.Interop.csproj index 9961aa52..24a23b8a 100644 --- a/gui/Profiler.Interop/Profiler.Interop.csproj +++ b/gui/Profiler.Interop/Profiler.Interop.csproj @@ -1,49 +1,7 @@ - - - + - Debug - AnyCPU - {168EFEDE-D263-41C7-8839-07CFA7815AC0} + net472 Library - Properties - Profiler.Interop - Profiler.Interop - v4.7.2 - 512 - true + false - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/gui/Profiler.Trace/Profiler.Trace.csproj b/gui/Profiler.Trace/Profiler.Trace.csproj index 5be24a9c..a4b3951a 100644 --- a/gui/Profiler.Trace/Profiler.Trace.csproj +++ b/gui/Profiler.Trace/Profiler.Trace.csproj @@ -1,84 +1,13 @@ - - - - + - Debug - AnyCPU - {9ADF36AE-023D-4D81-A13C-9A18A9E84359} + net472 Library - Properties Profiler.Tracer Profiler.Tracer - v4.7.2 - 512 - true - - + false + true - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.49\lib\net45\Dia2Lib.dll - True - - - ..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.49\lib\net45\Microsoft.Diagnostics.FastSerialization.dll - - - ..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.49\lib\net45\Microsoft.Diagnostics.Tracing.TraceEvent.dll - - - ..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.49\lib\net45\OSExtensions.dll - - - - - - - - - - - - - ..\packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.49\lib\net45\TraceReloggerLib.dll - True - - - - - - - - - - - - + - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - \ No newline at end of file diff --git a/gui/Profiler.Trace/packages.config b/gui/Profiler.Trace/packages.config deleted file mode 100644 index 08d4ef0a..00000000 --- a/gui/Profiler.Trace/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/samples/WindowsD3D12/Win32Application.cpp b/samples/WindowsD3D12/Win32Application.cpp index cb492b57..7750e323 100644 --- a/samples/WindowsD3D12/Win32Application.cpp +++ b/samples/WindowsD3D12/Win32Application.cpp @@ -75,6 +75,8 @@ int Win32Application::Run(DXSample* pSample, HINSTANCE hInstance, int nCmdShow) pSample->OnDestroy(); + OPTICK_SHUTDOWN(); + // Return this part of the WM_QUIT message to Windows. return static_cast(msg.wParam); } diff --git a/src/optick.h b/src/optick.h index 1001d3b1..4d00fb74 100644 --- a/src/optick.h +++ b/src/optick.h @@ -1023,6 +1023,10 @@ struct OptickApp if (OPTICK_CONCAT(gpu_autogen_description_, __LINE__) == nullptr) OPTICK_CONCAT(gpu_autogen_description_, __LINE__) = ::Optick::EventDescription::Create( NAME, __FILE__, __LINE__ ); \ ::Optick::GPUEvent OPTICK_CONCAT(gpu_autogen_event_, __LINE__)( *(OPTICK_CONCAT(gpu_autogen_description_, __LINE__)) ); \ +#define OPTICK_GPU_EVENT_DYNAMIC(NAME) OPTICK_EVENT_DYNAMIC(NAME); \ + ::Optick::EventDescription* OPTICK_CONCAT(gpu_autogen_description_, __LINE__) = ::Optick::EventDescription::CreateShared( NAME, __FILE__, __LINE__); \ + ::Optick::GPUEvent OPTICK_CONCAT(gpu_autogen_event_, __LINE__)( *(OPTICK_CONCAT(gpu_autogen_description_, __LINE__)) ); \ + #define OPTICK_GPU_FLIP(SWAP_CHAIN) ::Optick::GpuFlip(SWAP_CHAIN); ///////////////////////////////////////////////////////////////////////////////// @@ -1084,6 +1088,7 @@ struct OptickApp #define OPTICK_GPU_INIT_VULKAN(DEVICES, PHYSICAL_DEVICES, CMD_QUEUES, CMD_QUEUES_FAMILY, NUM_CMD_QUEUS, FUNCTIONS) #define OPTICK_GPU_CONTEXT(...) #define OPTICK_GPU_EVENT(NAME) +#define OPTICK_GPU_EVENT_DYNAMIC(NAME) #define OPTICK_GPU_FLIP(SWAP_CHAIN) #define OPTICK_UPDATE() #define OPTICK_FRAME_FLIP(...) diff --git a/src/optick_core.cpp b/src/optick_core.cpp index fa665680..1bfff720 100644 --- a/src/optick_core.cpp +++ b/src/optick_core.cpp @@ -1635,6 +1635,18 @@ void Core::Shutdown() fibers.clear(); EventDescriptionBoard::Get().Shutdown(); + + if (gpuProfiler) + { + Memory::Delete(gpuProfiler); + gpuProfiler = nullptr; + } + + if (symbolEngine) + { + Memory::Delete(symbolEngine); + symbolEngine = nullptr; + } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Core::~Core() diff --git a/src/optick_core.h b/src/optick_core.h index 26ca22f2..139361f4 100644 --- a/src/optick_core.h +++ b/src/optick_core.h @@ -256,6 +256,10 @@ struct EventStorage bool isFiberStorage; EventStorage(); + ~EventStorage() + { + Clear(false); + } OPTICK_INLINE EventData& NextEvent() { diff --git a/src/optick_gpu.d3d12.cpp b/src/optick_gpu.d3d12.cpp index c9737500..6a24fb6f 100644 --- a/src/optick_gpu.d3d12.cpp +++ b/src/optick_gpu.d3d12.cpp @@ -41,6 +41,8 @@ namespace Optick { + template void SafeRelease(T **ppT); + class GPUProfilerD3D12 : public GPUProfiler { struct Frame @@ -138,17 +140,15 @@ namespace Optick GPUProfilerD3D12::~GPUProfilerD3D12() { - WaitForFrame(frameNumber - 1); - - for (NodePayload* payload : nodePayloads) - Memory::Delete(payload); - nodePayloads.clear(); + for (NodePayload* payload : nodePayloads) + Memory::Delete(payload); + nodePayloads.clear(); - for (Node* node : nodes) - Memory::Delete(node); - nodes.clear(); + for (Node* node : nodes) + Memory::Delete(node); + nodes.clear(); - SafeRelease(&queryBuffer); + SafeRelease(&queryBuffer); } void GPUProfilerD3D12::InitDevice(ID3D12Device* pDevice, ID3D12CommandQueue** pCommandQueues, uint32_t numCommandQueues) diff --git a/src/optick_memory.h b/src/optick_memory.h index c4b8ee59..2a145087 100644 --- a/src/optick_memory.h +++ b/src/optick_memory.h @@ -41,421 +41,445 @@ namespace Optick { - class Memory - { - struct Header - { - uint64_t size; - }; - - static std::atomic memAllocated; - - static void* (*allocate)(size_t); - static void (*deallocate)(void*); - static void (*initThread)(void); - public: - static OPTICK_INLINE void* Alloc(size_t size) - { - size_t totalSize = size + sizeof(Header); - void *ptr = allocate(totalSize); - OPTICK_VERIFY(ptr, "Can't allocate memory", return nullptr); - - Header* header = (Header*)ptr; - header->size = totalSize; - memAllocated += totalSize; - - return (uint8_t*)ptr + sizeof(Header); - } - - static OPTICK_INLINE void Free(void* p) - { - if (p != nullptr) - { - uint8_t* basePtr = (uint8_t*)p - sizeof(Header); - Header* header = (Header*)basePtr; - memAllocated -= header->size; - deallocate(basePtr); - } - } - - static OPTICK_INLINE size_t GetAllocatedSize() - { - return (size_t)memAllocated; - } - - template - static T* New() - { - return new (Memory::Alloc(sizeof(T))) T(); - } - - template - static T* New(P1 p1) - { - return new (Memory::Alloc(sizeof(T))) T(p1); - } - - template - static T* New(P1 p1, P2 p2) - { - return new (Memory::Alloc(sizeof(T))) T(p1, p2); - } - - template - static void Delete(T* p) - { - if (p) - { - p->~T(); - Free(p); - } - } - - static void SetAllocator(AllocateFn allocateFn, DeallocateFn deallocateFn, InitThreadCb initThreadCb) - { - allocate = allocateFn; - deallocate = deallocateFn; - initThread = initThreadCb; - } - - static void InitThread() - { - if (initThread != nullptr) - initThread(); - } - - template - struct Allocator : public std::allocator - { - Allocator() {} - template - Allocator(const Allocator&) {} - template struct rebind { typedef Allocator other; }; - - typename std::allocator::pointer allocate(typename std::allocator::size_type n, typename std::allocator::const_pointer = 0) - { - return reinterpret_cast::pointer>(Memory::Alloc(n * sizeof(T))); - } - - void deallocate(typename std::allocator::pointer p, typename std::allocator::size_type) - { - Memory::Free(p); - } - }; - }; - - // std::* section - template class array : public std::array{}; - template class vector : public std::vector>{}; - template class list : public std::list>{}; - template class unordered_set : public std::unordered_set, std::equal_to, Memory::Allocator>{}; - template class unordered_map : public std::unordered_map, std::equal_to, Memory::Allocator>>{}; - - using string = std::basic_string, Memory::Allocator>; - using wstring = std::basic_string, Memory::Allocator>; - - using istringstream = std::basic_istringstream, Memory::Allocator>; - using ostringstream = std::basic_ostringstream, Memory::Allocator>; - using stringstream = std::basic_stringstream, Memory::Allocator>; - - using fstream = std::basic_fstream>; - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - template - struct MemoryChunk - { - T data[SIZE]; - MemoryChunk* next; - MemoryChunk* prev; - - MemoryChunk() : next(0), prev(0) {} - - ~MemoryChunk() - { - MemoryChunk* chunk = this; - while (chunk->next) - chunk = chunk->next; - - while (chunk != this) - { - MemoryChunk* toDelete = chunk; - chunk = toDelete->prev; - Memory::Delete(toDelete); - } - - if (prev != nullptr) - { - prev->next = nullptr; - prev = nullptr; - } - } - }; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - template - class MemoryPool - { - typedef MemoryChunk Chunk; - Chunk* root; - Chunk* chunk; - uint32 index; - - OPTICK_INLINE void AddChunk() - { - index = 0; - if (!chunk || !chunk->next) - { - Chunk* newChunk = Memory::New(); - if (chunk) - { - chunk->next = newChunk; - newChunk->prev = chunk; - chunk = newChunk; - } - else - { - root = chunk = newChunk; - } - } - else - { - chunk = chunk->next; - } - } - public: - MemoryPool() : root(nullptr), chunk(nullptr), index(SIZE) {} - - OPTICK_INLINE T& Add() - { - if (index >= SIZE) - AddChunk(); - - return chunk->data[index++]; - } - - OPTICK_INLINE T& Add(const T& item) - { - return Add() = item; - } - - OPTICK_INLINE T* AddRange(const T* items, size_t count, bool allowOverlap = true) - { - if (count == 0 || (count > SIZE && !allowOverlap)) - return nullptr; - - if (count >= (SIZE - index) && !allowOverlap) - { - AddChunk(); - } - - T* result = &chunk->data[index]; - - while (count) - { - size_t numLeft = SIZE - index; - size_t numCopy = numLeft < count ? numLeft : count; - std::memcpy(&chunk->data[index], items, sizeof(T) * numCopy); - - count -= numCopy; - items += numCopy; - index += (uint32_t)numCopy; - - if (count) - AddChunk(); - } - - return result; - } - - - OPTICK_INLINE T* TryAdd(int count) - { - if (index + count <= SIZE) - { - T* res = &chunk->data[index]; - index += count; - return res; - } - - return nullptr; - } - - OPTICK_INLINE T* Back() - { - if (chunk && index > 0) - return &chunk->data[index - 1]; - - if (chunk && chunk->prev != nullptr) - return &chunk->prev->data[SIZE - 1]; - - return nullptr; - } - - OPTICK_INLINE T* Front() - { - return !IsEmpty() ? &root->data[0] : nullptr; - } - - OPTICK_INLINE size_t Size() const - { - if (root == nullptr) - return 0; - - size_t count = 0; - - for (const Chunk* it = root; it != chunk; it = it->next) - count += SIZE; - - return count + index; - } - - OPTICK_INLINE bool IsEmpty() const - { - return (chunk == nullptr) || (chunk == root && index == 0); - } - - OPTICK_INLINE void Clear(bool preserveMemory = true) - { - if (!preserveMemory) - { - if (root) - { - Memory::Delete(root); - root = nullptr; - chunk = nullptr; - index = SIZE; - } - } - else if (root) - { - index = 0; - chunk = root; - } - } - - class const_iterator - { - void advance() - { - if (chunkIndex < SIZE - 1) - { - ++chunkIndex; - } - else - { - chunkPtr = chunkPtr->next; - chunkIndex = 0; - } - } - public: - typedef const_iterator self_type; - typedef T value_type; - typedef T& reference; - typedef T* pointer; - typedef int difference_type; - const_iterator(const Chunk* ptr, size_t index) : chunkPtr(ptr), chunkIndex(index) { } - self_type operator++() - { - self_type i = *this; - advance(); - return i; - } - self_type operator++(int /*junk*/) - { - advance(); - return *this; - } - reference operator*() { return (reference)chunkPtr->data[chunkIndex]; } - pointer operator->() { return &chunkPtr->data[chunkIndex]; } - bool operator==(const self_type& rhs) { return (chunkPtr == rhs.chunkPtr) && (chunkIndex == rhs.chunkIndex); } - bool operator!=(const self_type& rhs) { return (chunkPtr != rhs.chunkPtr) || (chunkIndex != rhs.chunkIndex); } - private: - const Chunk* chunkPtr; - size_t chunkIndex; - }; - - const_iterator begin() const - { - return const_iterator(root, root ? 0 : SIZE); - } - - const_iterator end() const - { - return const_iterator(chunk, index); - } - - template - void ForEach(Func func) const - { - for (const Chunk* it = root; it != chunk; it = it->next) - for (uint32 i = 0; i < SIZE; ++i) - func(it->data[i]); - - if (chunk) - for (uint32 i = 0; i < index; ++i) - func(chunk->data[i]); - } - - template - void ForEach(Func func) - { - for (Chunk* it = root; it != chunk; it = it->next) - for (uint32 i = 0; i < SIZE; ++i) - func(it->data[i]); - - if (chunk) - for (uint32 i = 0; i < index; ++i) - func(chunk->data[i]); - } - - template - void ForEachChunk(Func func) const - { - for (const Chunk* it = root; it != chunk; it = it->next) - func(it->data, SIZE); - - if (chunk) - func(chunk->data, index); - } - - void ToArray(T* destination) const - { - uint32 curIndex = 0; - - for (const Chunk* it = root; it != chunk; it = it->next) - { - memcpy(&destination[curIndex], it->data, sizeof(T) * SIZE); - curIndex += SIZE; - } - - if (chunk && index > 0) - { - memcpy(&destination[curIndex], chunk->data, sizeof(T) * index); - } - } - }; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - template - class MemoryBuffer : private MemoryPool - { - public: - template - U* Add(U* data, size_t size, bool allowOverlap = true) - { - return (U*)(MemoryPool::AddRange((uint8*)data, size, allowOverlap)); - } - - template - T* Add(const T& val, bool allowOverlap = true) - { - return static_cast(Add(&val, sizeof(T), allowOverlap)); - } - - void Clear(bool preserveMemory) - { - MemoryPool::Clear(preserveMemory); - } - }; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + class Memory + { + struct Header + { + uint64_t size; + }; + + static std::atomic memAllocated; + + static void * (*allocate)(size_t); + static void (*deallocate)(void *); + static void (*initThread)(void); + public: + static OPTICK_INLINE void * Alloc(size_t size) + { + size_t totalSize = size + sizeof(Header); + void * ptr = allocate(totalSize); + OPTICK_VERIFY(ptr, "Can't allocate memory", return nullptr); + + Header * header = (Header *)ptr; + header->size = totalSize; + memAllocated += totalSize; + + return (uint8_t *)ptr + sizeof(Header); + } + + static OPTICK_INLINE void Free(void * p) + { + if (p != nullptr) + { + uint8_t * basePtr = (uint8_t *)p - sizeof(Header); + Header * header = (Header *)basePtr; + memAllocated -= header->size; + deallocate(basePtr); + } + } + + static OPTICK_INLINE size_t GetAllocatedSize() + { + return (size_t)memAllocated; + } + + template + static T * New() + { + return new (Memory::Alloc(sizeof(T))) T(); + } + + template + static T * New(P1 p1) + { + return new (Memory::Alloc(sizeof(T))) T(p1); + } + + template + static T * New(P1 p1, P2 p2) + { + return new (Memory::Alloc(sizeof(T))) T(p1, p2); + } + + template + static void Delete(T * p) + { + if (p) + { + p->~T(); + Free(p); + } + } + + static void SetAllocator(AllocateFn allocateFn, DeallocateFn deallocateFn, InitThreadCb initThreadCb) + { + allocate = allocateFn; + deallocate = deallocateFn; + initThread = initThreadCb; + } + + static void InitThread() + { + if (initThread != nullptr) + initThread(); + } + +#if __cplusplus >= 202002L + template + struct Allocator : public std::allocator + { + Allocator() = default; + + template + Allocator(const Allocator &) {} + + template struct rebind { using other = Allocator; }; + + typename std::allocator_traits>::pointer allocate(typename std::allocator_traits>::size_type n, const void * hint = nullptr) + { + (void)hint; // Suppress unused parameter warning + return reinterpret_cast>::pointer>(Memory::Alloc(n * sizeof(T))); + } + + void deallocate(typename std::allocator_traits>::pointer p, typename std::allocator_traits>::size_type) + { + Memory::Free(static_cast(p)); + } + }; +#else + template + struct Allocator : public std::allocator + { + Allocator() {} + template + Allocator(const Allocator &) {} + template struct rebind { typedef Allocator other; }; + + typename std::allocator::pointer allocate(typename std::allocator::size_type n, typename std::allocator::const_pointer = 0) + { + return reinterpret_cast::pointer>(Memory::Alloc(n * sizeof(T))); + } + + void deallocate(typename std::allocator::pointer p, typename std::allocator::size_type) + { + Memory::Free(p); + } + }; +#endif + }; + + // std::* section + template class array : public std::array{}; + template class vector : public std::vector> {}; + template class list : public std::list> {}; + template class unordered_set : public std::unordered_set, std::equal_to, Memory::Allocator> {}; + template class unordered_map : public std::unordered_map, std::equal_to, Memory::Allocator>> {}; + + using string = std::basic_string, Memory::Allocator>; + using wstring = std::basic_string, Memory::Allocator>; + + using istringstream = std::basic_istringstream, Memory::Allocator>; + using ostringstream = std::basic_ostringstream, Memory::Allocator>; + using stringstream = std::basic_stringstream, Memory::Allocator>; + + using fstream = std::basic_fstream>; + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + template + struct MemoryChunk + { + T data[SIZE]; + MemoryChunk * next; + MemoryChunk * prev; + + MemoryChunk() : next(0), prev(0) {} + + ~MemoryChunk() + { + MemoryChunk * chunk = this; + while (chunk->next) + chunk = chunk->next; + + while (chunk != this) + { + MemoryChunk * toDelete = chunk; + chunk = toDelete->prev; + Memory::Delete(toDelete); + } + + if (prev != nullptr) + { + prev->next = nullptr; + prev = nullptr; + } + } + }; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + template + class MemoryPool + { + typedef MemoryChunk Chunk; + Chunk * root; + Chunk * chunk; + uint32 index; + + OPTICK_INLINE void AddChunk() + { + index = 0; + if (!chunk || !chunk->next) + { + Chunk * newChunk = Memory::New(); + if (chunk) + { + chunk->next = newChunk; + newChunk->prev = chunk; + chunk = newChunk; + } + else + { + root = chunk = newChunk; + } + } + else + { + chunk = chunk->next; + } + } + public: + MemoryPool() : root(nullptr), chunk(nullptr), index(SIZE) {} + + OPTICK_INLINE T & Add() + { + if (index >= SIZE) + AddChunk(); + + return chunk->data[index++]; + } + + OPTICK_INLINE T & Add(const T & item) + { + return Add() = item; + } + + OPTICK_INLINE T * AddRange(const T * items, size_t count, bool allowOverlap = true) + { + if (count == 0 || (count > SIZE && !allowOverlap)) + return nullptr; + + if (count >= (SIZE - index) && !allowOverlap) + { + AddChunk(); + } + + T * result = &chunk->data[index]; + + while (count) + { + size_t numLeft = SIZE - index; + size_t numCopy = numLeft < count ? numLeft : count; + std::memcpy(&chunk->data[index], items, sizeof(T) * numCopy); + + count -= numCopy; + items += numCopy; + index += (uint32_t)numCopy; + + if (count) + AddChunk(); + } + + return result; + } + + + OPTICK_INLINE T * TryAdd(int count) + { + if (index + count <= SIZE) + { + T * res = &chunk->data[index]; + index += count; + return res; + } + + return nullptr; + } + + OPTICK_INLINE T * Back() + { + if (chunk && index > 0) + return &chunk->data[index - 1]; + + if (chunk && chunk->prev != nullptr) + return &chunk->prev->data[SIZE - 1]; + + return nullptr; + } + + OPTICK_INLINE T * Front() + { + return !IsEmpty() ? &root->data[0] : nullptr; + } + + OPTICK_INLINE size_t Size() const + { + if (root == nullptr) + return 0; + + size_t count = 0; + + for (const Chunk * it = root; it != chunk; it = it->next) + count += SIZE; + + return count + index; + } + + OPTICK_INLINE bool IsEmpty() const + { + return (chunk == nullptr) || (chunk == root && index == 0); + } + + OPTICK_INLINE void Clear(bool preserveMemory = true) + { + if (!preserveMemory) + { + if (root) + { + Memory::Delete(root); + root = nullptr; + chunk = nullptr; + index = SIZE; + } + } + else if (root) + { + index = 0; + chunk = root; + } + } + + class const_iterator + { + void advance() + { + if (chunkIndex < SIZE - 1) + { + ++chunkIndex; + } + else + { + chunkPtr = chunkPtr->next; + chunkIndex = 0; + } + } + public: + typedef const_iterator self_type; + typedef T value_type; + typedef T & reference; + typedef T * pointer; + typedef int difference_type; + const_iterator(const Chunk * ptr, size_t index) : chunkPtr(ptr), chunkIndex(index) { } + self_type operator++() + { + self_type i = *this; + advance(); + return i; + } + self_type operator++(int /*junk*/) + { + advance(); + return *this; + } + reference operator*() { return (reference)chunkPtr->data[chunkIndex]; } + pointer operator->() { return &chunkPtr->data[chunkIndex]; } + bool operator==(const self_type & rhs) { return (chunkPtr == rhs.chunkPtr) && (chunkIndex == rhs.chunkIndex); } + bool operator!=(const self_type & rhs) { return (chunkPtr != rhs.chunkPtr) || (chunkIndex != rhs.chunkIndex); } + private: + const Chunk * chunkPtr; + size_t chunkIndex; + }; + + const_iterator begin() const + { + return const_iterator(root, root ? 0 : SIZE); + } + + const_iterator end() const + { + return const_iterator(chunk, index); + } + + template + void ForEach(Func func) const + { + for (const Chunk * it = root; it != chunk; it = it->next) + for (uint32 i = 0; i < SIZE; ++i) + func(it->data[i]); + + if (chunk) + for (uint32 i = 0; i < index; ++i) + func(chunk->data[i]); + } + + template + void ForEach(Func func) + { + for (Chunk * it = root; it != chunk; it = it->next) + for (uint32 i = 0; i < SIZE; ++i) + func(it->data[i]); + + if (chunk) + for (uint32 i = 0; i < index; ++i) + func(chunk->data[i]); + } + + template + void ForEachChunk(Func func) const + { + for (const Chunk * it = root; it != chunk; it = it->next) + func(it->data, SIZE); + + if (chunk) + func(chunk->data, index); + } + + void ToArray(T * destination) const + { + uint32 curIndex = 0; + + for (const Chunk * it = root; it != chunk; it = it->next) + { + memcpy(&destination[curIndex], it->data, sizeof(T) * SIZE); + curIndex += SIZE; + } + + if (chunk && index > 0) + { + memcpy(&destination[curIndex], chunk->data, sizeof(T) * index); + } + } + }; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + template + class MemoryBuffer : private MemoryPool + { + public: + template + U * Add(U * data, size_t size, bool allowOverlap = true) + { + return (U *)(MemoryPool::AddRange((uint8 *)data, size, allowOverlap)); + } + + template + T * Add(const T & val, bool allowOverlap = true) + { + return static_cast(Add(&val, sizeof(T), allowOverlap)); + } + + void Clear(bool preserveMemory) + { + MemoryPool::Clear(preserveMemory); + } + }; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } #endif //USE_OPTICK \ No newline at end of file