Initial transform feedback support (#1370)
* Initial transform feedback support * Some nits and fixes * Update ReportCounterType and Write method * Can't change shader or TFB bindings while TFB is active * Fix geometry shader input names with new naming
This commit is contained in:
parent
16dafe6316
commit
788ca6a411
23 changed files with 468 additions and 68 deletions
|
@ -7,6 +7,8 @@ namespace Ryujinx.Graphics.GAL
|
|||
{
|
||||
void Barrier();
|
||||
|
||||
void BeginTransformFeedback(PrimitiveTopology topology);
|
||||
|
||||
void ClearRenderTargetColor(int index, uint componentMask, ColorF color);
|
||||
|
||||
void ClearRenderTargetDepthStencil(
|
||||
|
@ -27,6 +29,8 @@ namespace Ryujinx.Graphics.GAL
|
|||
int firstVertex,
|
||||
int firstInstance);
|
||||
|
||||
void EndTransformFeedback();
|
||||
|
||||
void SetBlendState(int index, BlendDescriptor blend);
|
||||
|
||||
void SetDepthBias(PolygonModeMask enables, float factor, float units, float clamp);
|
||||
|
@ -73,6 +77,7 @@ namespace Ryujinx.Graphics.GAL
|
|||
|
||||
void SetTexture(int index, ShaderStage stage, ITexture texture);
|
||||
|
||||
void SetTransformFeedbackBuffer(int index, BufferRange buffer);
|
||||
void SetUniformBuffer(int index, ShaderStage stage, BufferRange buffer);
|
||||
|
||||
void SetUserClipDistance(int index, bool enableClip);
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace Ryujinx.Graphics.GAL
|
|||
|
||||
BufferHandle CreateBuffer(int size);
|
||||
|
||||
IProgram CreateProgram(IShader[] shaders);
|
||||
IProgram CreateProgram(IShader[] shaders, TransformFeedbackDescriptor[] transformFeedbackDescriptors);
|
||||
|
||||
ISampler CreateSampler(SamplerCreateInfo info);
|
||||
ITexture CreateTexture(TextureCreateInfo info, float scale);
|
||||
|
|
19
Ryujinx.Graphics.GAL/TransformFeedbackDescriptor.cs
Normal file
19
Ryujinx.Graphics.GAL/TransformFeedbackDescriptor.cs
Normal file
|
@ -0,0 +1,19 @@
|
|||
using System;
|
||||
|
||||
namespace Ryujinx.Graphics.GAL
|
||||
{
|
||||
public struct TransformFeedbackDescriptor
|
||||
{
|
||||
public int BufferIndex { get; }
|
||||
public int Stride { get; }
|
||||
|
||||
public byte[] VaryingLocations { get; }
|
||||
|
||||
public TransformFeedbackDescriptor(int bufferIndex, int stride, byte[] varyingLocations)
|
||||
{
|
||||
BufferIndex = bufferIndex;
|
||||
Stride = stride;
|
||||
VaryingLocations = varyingLocations ?? throw new ArgumentNullException(nameof(varyingLocations));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue