MoonWorks/src/Graphics/Resources/ComputePipeline.cs

46 lines
1.2 KiB
C#
Raw Normal View History

using RefreshCS;
using System;
2021-02-06 03:51:10 +00:00
using System.Runtime.InteropServices;
namespace MoonWorks.Graphics
{
2022-02-23 05:14:32 +00:00
public class ComputePipeline : GraphicsResource
{
protected override Action<IntPtr, IntPtr, IntPtr> QueueDestroyFunction => Refresh.Refresh_QueueDestroyComputePipeline;
2022-02-23 05:14:32 +00:00
public ShaderStageState ComputeShaderState { get; }
2022-02-23 05:14:32 +00:00
public unsafe ComputePipeline(
GraphicsDevice device,
ShaderStageState computeShaderState,
uint bufferBindingCount,
uint imageBindingCount
) : base(device)
{
var computePipelineLayoutCreateInfo = new Refresh.ComputePipelineLayoutCreateInfo
{
bufferBindingCount = bufferBindingCount,
imageBindingCount = imageBindingCount
};
2022-02-23 05:14:32 +00:00
var computePipelineCreateInfo = new Refresh.ComputePipelineCreateInfo
{
pipelineLayoutCreateInfo = computePipelineLayoutCreateInfo,
computeShaderState = new Refresh.ShaderStageState
{
entryPointName = computeShaderState.EntryPointName,
shaderModule = computeShaderState.ShaderModule.Handle,
uniformBufferSize = computeShaderState.UniformBufferSize
}
};
2022-02-23 05:14:32 +00:00
Handle = Refresh.Refresh_CreateComputePipeline(
device.Handle,
computePipelineCreateInfo
);
2022-02-23 05:14:32 +00:00
ComputeShaderState = computeShaderState;
}
}
}