|
|
@@ -69,109 +69,95 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
.Add(ResourceStages.Vertex, ResourceType.UniformBuffer, 1)
|
|
|
.Add(ResourceStages.Fragment, ResourceType.TextureAndSampler, 0).Build();
|
|
|
|
|
|
- _programColorBlit = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programColorBlit = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorBlitVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("ColorBlitFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, blitResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("ColorBlitFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], blitResourceLayout);
|
|
|
|
|
|
- _programColorBlitMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programColorBlitMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorBlitVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("ColorBlitMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, blitResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("ColorBlitMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], blitResourceLayout);
|
|
|
|
|
|
- _programColorBlitClearAlpha = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programColorBlitClearAlpha = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorBlitVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("ColorBlitClearAlphaFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, blitResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("ColorBlitClearAlphaFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], blitResourceLayout);
|
|
|
|
|
|
ResourceLayout colorClearResourceLayout = new ResourceLayoutBuilder().Add(ResourceStages.Vertex, ResourceType.UniformBuffer, 1).Build();
|
|
|
|
|
|
- _programColorClearF = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programColorClearF = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorClearVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("ColorClearFFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorClearResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("ColorClearFFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorClearResourceLayout);
|
|
|
|
|
|
- _programColorClearSI = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programColorClearSI = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorClearVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("ColorClearSIFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorClearResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("ColorClearSIFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorClearResourceLayout);
|
|
|
|
|
|
- _programColorClearUI = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programColorClearUI = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorClearVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("ColorClearUIFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorClearResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("ColorClearUIFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorClearResourceLayout);
|
|
|
|
|
|
- _programDepthStencilClear = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programDepthStencilClear = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorClearVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("DepthStencilClearFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorClearResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("DepthStencilClearFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorClearResourceLayout);
|
|
|
|
|
|
ResourceLayout strideChangeResourceLayout = new ResourceLayoutBuilder()
|
|
|
.Add(ResourceStages.Compute, ResourceType.UniformBuffer, 0)
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 1)
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 2, true).Build();
|
|
|
|
|
|
- _programStrideChange = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
- new ShaderSource(ReadSpirv("ChangeBufferStride.spv"), ShaderStage.Compute, TargetLanguage.Spirv),
|
|
|
- }, strideChangeResourceLayout);
|
|
|
+ _programStrideChange = gd.CreateProgramWithMinimalLayout([
|
|
|
+ new ShaderSource(ReadSpirv("ChangeBufferStride.spv"), ShaderStage.Compute, TargetLanguage.Spirv)
|
|
|
+ ], strideChangeResourceLayout);
|
|
|
|
|
|
ResourceLayout colorCopyResourceLayout = new ResourceLayoutBuilder()
|
|
|
.Add(ResourceStages.Compute, ResourceType.UniformBuffer, 0)
|
|
|
.Add(ResourceStages.Compute, ResourceType.TextureAndSampler, 0)
|
|
|
.Add(ResourceStages.Compute, ResourceType.Image, 0, true).Build();
|
|
|
|
|
|
- _programColorCopyShortening = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
- new ShaderSource(ReadSpirv("ColorCopyShorteningCompute.spv"), ShaderStage.Compute, TargetLanguage.Spirv),
|
|
|
- }, colorCopyResourceLayout);
|
|
|
+ _programColorCopyShortening = gd.CreateProgramWithMinimalLayout([
|
|
|
+ new ShaderSource(ReadSpirv("ColorCopyShorteningCompute.spv"), ShaderStage.Compute, TargetLanguage.Spirv)
|
|
|
+ ], colorCopyResourceLayout);
|
|
|
|
|
|
- _programColorCopyToNonMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
- new ShaderSource(ReadSpirv("ColorCopyToNonMsCompute.spv"), ShaderStage.Compute, TargetLanguage.Spirv),
|
|
|
- }, colorCopyResourceLayout);
|
|
|
+ _programColorCopyToNonMs = gd.CreateProgramWithMinimalLayout([
|
|
|
+ new ShaderSource(ReadSpirv("ColorCopyToNonMsCompute.spv"), ShaderStage.Compute, TargetLanguage.Spirv)
|
|
|
+ ], colorCopyResourceLayout);
|
|
|
|
|
|
- _programColorCopyWidening = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
- new ShaderSource(ReadSpirv("ColorCopyWideningCompute.spv"), ShaderStage.Compute, TargetLanguage.Spirv),
|
|
|
- }, colorCopyResourceLayout);
|
|
|
+ _programColorCopyWidening = gd.CreateProgramWithMinimalLayout([
|
|
|
+ new ShaderSource(ReadSpirv("ColorCopyWideningCompute.spv"), ShaderStage.Compute, TargetLanguage.Spirv)
|
|
|
+ ], colorCopyResourceLayout);
|
|
|
|
|
|
ResourceLayout colorDrawToMsResourceLayout = new ResourceLayoutBuilder()
|
|
|
.Add(ResourceStages.Fragment, ResourceType.UniformBuffer, 0)
|
|
|
.Add(ResourceStages.Fragment, ResourceType.TextureAndSampler, 0).Build();
|
|
|
|
|
|
- _programColorDrawToMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programColorDrawToMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorDrawToMsVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("ColorDrawToMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorDrawToMsResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("ColorDrawToMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorDrawToMsResourceLayout);
|
|
|
|
|
|
ResourceLayout convertD32S8ToD24S8ResourceLayout = new ResourceLayoutBuilder()
|
|
|
.Add(ResourceStages.Compute, ResourceType.UniformBuffer, 0)
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 1)
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 2, true).Build();
|
|
|
|
|
|
- _programConvertD32S8ToD24S8 = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
- new ShaderSource(ReadSpirv("ConvertD32S8ToD24S8.spv"), ShaderStage.Compute, TargetLanguage.Spirv),
|
|
|
- }, convertD32S8ToD24S8ResourceLayout);
|
|
|
+ _programConvertD32S8ToD24S8 = gd.CreateProgramWithMinimalLayout([
|
|
|
+ new ShaderSource(ReadSpirv("ConvertD32S8ToD24S8.spv"), ShaderStage.Compute, TargetLanguage.Spirv)
|
|
|
+ ], convertD32S8ToD24S8ResourceLayout);
|
|
|
|
|
|
ResourceLayout convertIndexBufferResourceLayout = new ResourceLayoutBuilder()
|
|
|
.Add(ResourceStages.Compute, ResourceType.UniformBuffer, 0)
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 1)
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 2, true).Build();
|
|
|
|
|
|
- _programConvertIndexBuffer = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
- new ShaderSource(ReadSpirv("ConvertIndexBuffer.spv"), ShaderStage.Compute, TargetLanguage.Spirv),
|
|
|
- }, convertIndexBufferResourceLayout);
|
|
|
+ _programConvertIndexBuffer = gd.CreateProgramWithMinimalLayout([
|
|
|
+ new ShaderSource(ReadSpirv("ConvertIndexBuffer.spv"), ShaderStage.Compute, TargetLanguage.Spirv)
|
|
|
+ ], convertIndexBufferResourceLayout);
|
|
|
|
|
|
ResourceLayout convertIndirectDataResourceLayout = new ResourceLayoutBuilder()
|
|
|
.Add(ResourceStages.Compute, ResourceType.UniformBuffer, 0)
|
|
|
@@ -179,60 +165,51 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 2, true)
|
|
|
.Add(ResourceStages.Compute, ResourceType.StorageBuffer, 3).Build();
|
|
|
|
|
|
- _programConvertIndirectData = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
- new ShaderSource(ReadSpirv("ConvertIndirectData.spv"), ShaderStage.Compute, TargetLanguage.Spirv),
|
|
|
- }, convertIndirectDataResourceLayout);
|
|
|
+ _programConvertIndirectData = gd.CreateProgramWithMinimalLayout([
|
|
|
+ new ShaderSource(ReadSpirv("ConvertIndirectData.spv"), ShaderStage.Compute, TargetLanguage.Spirv)
|
|
|
+ ], convertIndirectDataResourceLayout);
|
|
|
|
|
|
- _programDepthBlit = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programDepthBlit = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorBlitVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("DepthBlitFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, blitResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("DepthBlitFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], blitResourceLayout);
|
|
|
|
|
|
- _programDepthBlitMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programDepthBlitMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorBlitVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("DepthBlitMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, blitResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("DepthBlitMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], blitResourceLayout);
|
|
|
|
|
|
- _programDepthDrawToMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programDepthDrawToMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorDrawToMsVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("DepthDrawToMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorDrawToMsResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("DepthDrawToMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorDrawToMsResourceLayout);
|
|
|
|
|
|
- _programDepthDrawToNonMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programDepthDrawToNonMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorDrawToMsVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("DepthDrawToNonMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorDrawToMsResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("DepthDrawToNonMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorDrawToMsResourceLayout);
|
|
|
|
|
|
if (gd.Capabilities.SupportsShaderStencilExport)
|
|
|
{
|
|
|
- _programStencilBlit = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programStencilBlit = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorBlitVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("StencilBlitFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, blitResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("StencilBlitFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], blitResourceLayout);
|
|
|
|
|
|
- _programStencilBlitMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programStencilBlitMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorBlitVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("StencilBlitMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, blitResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("StencilBlitMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], blitResourceLayout);
|
|
|
|
|
|
- _programStencilDrawToMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programStencilDrawToMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorDrawToMsVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("StencilDrawToMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorDrawToMsResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("StencilDrawToMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorDrawToMsResourceLayout);
|
|
|
|
|
|
- _programStencilDrawToNonMs = gd.CreateProgramWithMinimalLayout(new[]
|
|
|
- {
|
|
|
+ _programStencilDrawToNonMs = gd.CreateProgramWithMinimalLayout([
|
|
|
new ShaderSource(ReadSpirv("ColorDrawToMsVertex.spv"), ShaderStage.Vertex, TargetLanguage.Spirv),
|
|
|
- new ShaderSource(ReadSpirv("StencilDrawToNonMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv),
|
|
|
- }, colorDrawToMsResourceLayout);
|
|
|
+ new ShaderSource(ReadSpirv("StencilDrawToNonMsFragment.spv"), ShaderStage.Fragment, TargetLanguage.Spirv)
|
|
|
+ ], colorDrawToMsResourceLayout);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -407,7 +384,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
buffer.Holder.SetDataUnchecked<float>(buffer.Offset, region);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(1, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(1, buffer.Range)]);
|
|
|
|
|
|
Span<Viewport> viewports = stackalloc Viewport[1];
|
|
|
|
|
|
@@ -450,8 +427,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
int dstHeight = dst.Height;
|
|
|
|
|
|
_pipeline.SetRenderTarget(dst, (uint)dstWidth, (uint)dstHeight);
|
|
|
- _pipeline.SetRenderTargetColorMasks(new uint[] { 0xf });
|
|
|
- _pipeline.SetScissors(stackalloc Rectangle<int>[] { new Rectangle<int>(0, 0, dstWidth, dstHeight) });
|
|
|
+ _pipeline.SetRenderTargetColorMasks([0xf]);
|
|
|
+ _pipeline.SetScissors([new Rectangle<int>(0, 0, dstWidth, dstHeight)]);
|
|
|
|
|
|
if (clearAlpha)
|
|
|
{
|
|
|
@@ -503,7 +480,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
buffer.Holder.SetDataUnchecked<float>(buffer.Offset, region);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(1, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(1, buffer.Range)]);
|
|
|
|
|
|
Span<Viewport> viewports = stackalloc Viewport[1];
|
|
|
|
|
|
@@ -526,7 +503,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
int dstHeight = dst.Height;
|
|
|
|
|
|
_pipeline.SetRenderTarget(dst, (uint)dstWidth, (uint)dstHeight);
|
|
|
- _pipeline.SetScissors(stackalloc Rectangle<int>[] { new Rectangle<int>(0, 0, dstWidth, dstHeight) });
|
|
|
+ _pipeline.SetScissors([new Rectangle<int>(0, 0, dstWidth, dstHeight)]);
|
|
|
_pipeline.SetViewports(viewports);
|
|
|
_pipeline.SetPrimitiveTopology(PrimitiveTopology.TriangleStrip);
|
|
|
|
|
|
@@ -657,7 +634,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
buffer.Holder.SetDataUnchecked(buffer.Offset, clearColor);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(1, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(1, buffer.Range)]);
|
|
|
|
|
|
Span<Viewport> viewports = stackalloc Viewport[1];
|
|
|
|
|
|
@@ -689,7 +666,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
_pipeline.SetRenderTarget(dst, (uint)dstWidth, (uint)dstHeight);
|
|
|
_pipeline.SetRenderTargetColorMasks(new[] { componentMask });
|
|
|
_pipeline.SetViewports(viewports);
|
|
|
- _pipeline.SetScissors(stackalloc Rectangle<int>[] { scissor });
|
|
|
+ _pipeline.SetScissors([scissor]);
|
|
|
_pipeline.SetPrimitiveTopology(PrimitiveTopology.TriangleStrip);
|
|
|
_pipeline.Draw(4, 1, 0, 0);
|
|
|
_pipeline.Finish();
|
|
|
@@ -717,9 +694,9 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
using ScopedTemporaryBuffer buffer = gd.BufferManager.ReserveOrCreate(gd, cbs, ClearColorBufferSize);
|
|
|
|
|
|
- buffer.Holder.SetDataUnchecked<float>(buffer.Offset, stackalloc float[] { depthValue });
|
|
|
+ buffer.Holder.SetDataUnchecked<float>(buffer.Offset, [depthValue]);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(1, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(1, buffer.Range)]);
|
|
|
|
|
|
Span<Viewport> viewports = stackalloc Viewport[1];
|
|
|
|
|
|
@@ -735,7 +712,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
_pipeline.SetProgram(_programDepthStencilClear);
|
|
|
_pipeline.SetRenderTarget(dst, (uint)dstWidth, (uint)dstHeight);
|
|
|
_pipeline.SetViewports(viewports);
|
|
|
- _pipeline.SetScissors(stackalloc Rectangle<int>[] { scissor });
|
|
|
+ _pipeline.SetScissors([scissor]);
|
|
|
_pipeline.SetPrimitiveTopology(PrimitiveTopology.TriangleStrip);
|
|
|
_pipeline.SetDepthTest(new DepthTestDescriptor(true, depthMask, CompareOp.Always));
|
|
|
_pipeline.SetStencilTest(CreateStencilTestDescriptor(stencilMask != 0, stencilValue, 0xff, stencilMask));
|
|
|
@@ -776,7 +753,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
gd.BufferManager.SetData<float>(bufferHandle, 0, region);
|
|
|
|
|
|
- pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(1, new BufferRange(bufferHandle, 0, RegionBufferSize)) });
|
|
|
+ pipeline.SetUniformBuffers([new BufferAssignment(1, new BufferRange(bufferHandle, 0, RegionBufferSize))]);
|
|
|
|
|
|
Span<Viewport> viewports = stackalloc Viewport[1];
|
|
|
|
|
|
@@ -852,7 +829,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
_pipeline.SetCommandBuffer(cbs);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]);
|
|
|
|
|
|
Span<Auto<DisposableBuffer>> sbRanges = new Auto<DisposableBuffer>[2];
|
|
|
|
|
|
@@ -915,7 +892,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
gd.Api.CmdFillBuffer(cbs.CommandBuffer, dstBuffer, 0, Vk.WholeSize, 0);
|
|
|
|
|
|
- List<BufferCopy> bufferCopy = new();
|
|
|
+ List<BufferCopy> bufferCopy = [];
|
|
|
int outputOffset = 0;
|
|
|
|
|
|
// Try to merge copies of adjacent indices to reduce copy count.
|
|
|
@@ -1030,7 +1007,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
Format srcFormat = GetFormat(componentSize, srcBpp / componentSize);
|
|
|
Format dstFormat = GetFormat(componentSize, dstBpp / componentSize);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]);
|
|
|
|
|
|
for (int l = 0; l < levels; l++)
|
|
|
{
|
|
|
@@ -1111,7 +1088,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
1);
|
|
|
|
|
|
_pipeline.SetCommandBuffer(cbs);
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]);
|
|
|
|
|
|
if (isDepthOrStencil)
|
|
|
{
|
|
|
@@ -1130,7 +1107,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
0f,
|
|
|
1f);
|
|
|
|
|
|
- _pipeline.SetScissors(stackalloc Rectangle<int>[] { new Rectangle<int>(0, 0, dst.Width, dst.Height) });
|
|
|
+ _pipeline.SetScissors([new Rectangle<int>(0, 0, dst.Width, dst.Height)]);
|
|
|
_pipeline.SetViewports(viewports);
|
|
|
_pipeline.SetPrimitiveTopology(PrimitiveTopology.TriangleStrip);
|
|
|
|
|
|
@@ -1251,12 +1228,12 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
0f,
|
|
|
1f);
|
|
|
|
|
|
- _pipeline.SetRenderTargetColorMasks(new uint[] { 0xf });
|
|
|
- _pipeline.SetScissors(stackalloc Rectangle<int>[] { new Rectangle<int>(0, 0, dst.Width, dst.Height) });
|
|
|
+ _pipeline.SetRenderTargetColorMasks([0xf]);
|
|
|
+ _pipeline.SetScissors([new Rectangle<int>(0, 0, dst.Width, dst.Height)]);
|
|
|
_pipeline.SetViewports(viewports);
|
|
|
_pipeline.SetPrimitiveTopology(PrimitiveTopology.TriangleStrip);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]);
|
|
|
|
|
|
if (isDepthOrStencil)
|
|
|
{
|
|
|
@@ -1578,9 +1555,9 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
srcIndirectBufferOffset,
|
|
|
indirectDataSize);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, drawCountBufferAligned) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(0, drawCountBufferAligned)]);
|
|
|
_pipeline.SetStorageBuffers(1, new[] { srcIndirectBuffer.GetBuffer(), dstIndirectBuffer.GetBuffer() });
|
|
|
- _pipeline.SetStorageBuffers(stackalloc[] { new BufferAssignment(3, patternScoped.Range) });
|
|
|
+ _pipeline.SetStorageBuffers([new BufferAssignment(3, patternScoped.Range)]);
|
|
|
|
|
|
_pipeline.SetProgram(_programConvertIndirectData);
|
|
|
_pipeline.DispatchCompute(1, 1, 1);
|
|
|
@@ -1607,7 +1584,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
0,
|
|
|
convertedCount * outputIndexSize);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, new BufferRange(patternScoped.Handle, patternScoped.Offset, ParamsBufferSize)) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(0, new BufferRange(patternScoped.Handle, patternScoped.Offset, ParamsBufferSize))
|
|
|
+ ]);
|
|
|
_pipeline.SetStorageBuffers(1, new[] { srcIndexBuffer.GetBuffer(), dstIndexBuffer.GetBuffer() });
|
|
|
|
|
|
_pipeline.SetProgram(_programConvertIndexBuffer);
|
|
|
@@ -1675,7 +1653,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|
|
|
|
|
_pipeline.SetCommandBuffer(cbs);
|
|
|
|
|
|
- _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, buffer.Range) });
|
|
|
+ _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]);
|
|
|
|
|
|
Span<Auto<DisposableBuffer>> sbRanges = new Auto<DisposableBuffer>[2];
|
|
|
|