// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.IO;
using Flax.Build;
using Flax.Build.NativeCpp;
///
/// DirectX 12 graphics backend module.
///
public class GraphicsDeviceDX12 : GraphicsDeviceBaseModule
{
///
/// Enables using PIX events to instrument game labeling regions of CPU or GPU work and marking important occurrences.
///
public bool UseWinPixEventRuntime = false;
///
public override void Setup(BuildOptions options)
{
base.Setup(options);
options.PublicDefinitions.Add("GRAPHICS_API_DIRECTX12");
switch (options.Platform.Target)
{
case TargetPlatform.Windows:
options.OutputFiles.Add("d3d12.lib");
options.DelayLoadLibraries.Add("d3d12.dll");
break;
case TargetPlatform.XboxOne:
options.OutputFiles.Add("d3d12_x.lib");
break;
case TargetPlatform.XboxScarlett:
options.OutputFiles.Add("d3d12_xs.lib");
break;
}
if (UseWinPixEventRuntime)
{
options.PrivateDefinitions.Add("USE_PIX");
options.PrivateIncludePaths.Add(Path.Combine(Globals.EngineRoot, "Source/ThirdParty/WinPixEventRuntime"));
options.OutputFiles.Add(Path.Combine(options.DepsFolder, "WinPixEventRuntime.lib"));
options.DependencyFiles.Add(Path.Combine(options.DepsFolder, "WinPixEventRuntime.dll"));
options.DelayLoadLibraries.Add("WinPixEventRuntime.dll");
}
}
}