Move solution and projects to src
This commit is contained in:
parent
cd124bda58
commit
cee7121058
3466 changed files with 55 additions and 55 deletions
93
src/Ryujinx.ShaderTools/Program.cs
Normal file
93
src/Ryujinx.ShaderTools/Program.cs
Normal file
|
@ -0,0 +1,93 @@
|
|||
using CommandLine;
|
||||
using Ryujinx.Graphics.Shader;
|
||||
using Ryujinx.Graphics.Shader.Translation;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Ryujinx.ShaderTools
|
||||
{
|
||||
class Program
|
||||
{
|
||||
private class GpuAccessor : IGpuAccessor
|
||||
{
|
||||
private readonly byte[] _data;
|
||||
|
||||
public GpuAccessor(byte[] data)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
|
||||
public ReadOnlySpan<ulong> GetCode(ulong address, int minimumSize)
|
||||
{
|
||||
return MemoryMarshal.Cast<byte, ulong>(new ReadOnlySpan<byte>(_data).Slice((int)address));
|
||||
}
|
||||
}
|
||||
|
||||
private class Options
|
||||
{
|
||||
[Option("compute", Required = false, Default = false, HelpText = "Indicate that the shader is a compute shader.")]
|
||||
public bool Compute { get; set; }
|
||||
|
||||
[Option("target-language", Required = false, Default = TargetLanguage.Glsl, HelpText = "Indicate the target shader language to use.")]
|
||||
public TargetLanguage TargetLanguage { get; set; }
|
||||
|
||||
[Option("target-api", Required = false, Default = TargetApi.OpenGL, HelpText = "Indicate the target graphics api to use.")]
|
||||
public TargetApi TargetApi { get; set; }
|
||||
|
||||
[Value(0, MetaName = "input", HelpText = "Binary Maxwell shader input path.", Required = true)]
|
||||
public string InputPath { get; set; }
|
||||
|
||||
[Value(1, MetaName = "output", HelpText = "Decompiled shader output path.", Required = false)]
|
||||
public string OutputPath { get; set; }
|
||||
}
|
||||
|
||||
static void HandleArguments(Options options)
|
||||
{
|
||||
TranslationFlags flags = TranslationFlags.DebugMode;
|
||||
|
||||
if (options.Compute)
|
||||
{
|
||||
flags |= TranslationFlags.Compute;
|
||||
}
|
||||
|
||||
byte[] data = File.ReadAllBytes(options.InputPath);
|
||||
|
||||
TranslationOptions translationOptions = new TranslationOptions(options.TargetLanguage, options.TargetApi, flags);
|
||||
|
||||
ShaderProgram program = Translator.CreateContext(0, new GpuAccessor(data), translationOptions).Translate();
|
||||
|
||||
if (options.OutputPath == null)
|
||||
{
|
||||
if (program.BinaryCode != null)
|
||||
{
|
||||
using Stream outputStream = Console.OpenStandardOutput();
|
||||
|
||||
outputStream.Write(program.BinaryCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(program.Code);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (program.BinaryCode != null)
|
||||
{
|
||||
File.WriteAllBytes(options.OutputPath, program.BinaryCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
File.WriteAllText(options.OutputPath, program.Code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Parser.Default.ParseArguments<Options>(args)
|
||||
.WithParsed(options => HandleArguments(options))
|
||||
.WithNotParsed(errors => errors.Output());
|
||||
}
|
||||
}
|
||||
}
|
17
src/Ryujinx.ShaderTools/Ryujinx.ShaderTools.csproj
Normal file
17
src/Ryujinx.ShaderTools/Ryujinx.ShaderTools.csproj
Normal file
|
@ -0,0 +1,17 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<Configurations>Debug;Release</Configurations>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Ryujinx.Graphics.Shader\Ryujinx.Graphics.Shader.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommandLineParser" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
Loading…
Add table
Add a link
Reference in a new issue