MoonWorks/src/Graphics/Resources/ComputePipeline.cs

42 lines
1.1 KiB
C#
Raw Normal View History

using RefreshCS;
using System;
namespace MoonWorks.Graphics
{
2023-09-19 20:19:41 +00:00
/// <summary>
/// Compute pipelines perform arbitrary parallel processing on input data.
/// </summary>
public class ComputePipeline : RefreshResource
2022-02-23 05:14:32 +00:00
{
2022-03-04 01:16:39 +00:00
protected override Action<IntPtr, IntPtr> QueueDestroyFunction => Refresh.Refresh_QueueDestroyComputePipeline;
2022-03-02 19:45:37 +00:00
public ComputeShaderInfo ComputeShaderInfo { get; }
2022-02-23 05:14:32 +00:00
public unsafe ComputePipeline(
GraphicsDevice device,
2022-03-02 19:42:26 +00:00
ComputeShaderInfo computeShaderInfo
2022-02-23 05:14:32 +00:00
) : base(device)
{
2022-03-02 19:42:26 +00:00
var refreshComputeShaderInfo = new Refresh.ComputeShaderInfo
2022-02-23 05:14:32 +00:00
{
2022-03-02 19:42:26 +00:00
entryPointName = computeShaderInfo.EntryPointName,
shaderModule = computeShaderInfo.ShaderModule.Handle,
uniformBufferSize = computeShaderInfo.UniformBufferSize,
bufferBindingCount = computeShaderInfo.BufferBindingCount,
imageBindingCount = computeShaderInfo.ImageBindingCount
2022-02-23 05:14:32 +00:00
};
2022-02-23 05:14:32 +00:00
Handle = Refresh.Refresh_CreateComputePipeline(
device.Handle,
2022-03-02 19:42:26 +00:00
refreshComputeShaderInfo
2022-02-23 05:14:32 +00:00
);
if (Handle == IntPtr.Zero)
{
throw new Exception("Could not create compute pipeline!");
}
2022-03-02 19:45:37 +00:00
ComputeShaderInfo = computeShaderInfo;
2022-02-23 05:14:32 +00:00
}
}
}