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
69
Ryujinx.Graphics.Shader/CodeGen/Glsl/Varying.cs
Normal file
69
Ryujinx.Graphics.Shader/CodeGen/Glsl/Varying.cs
Normal file
|
@ -0,0 +1,69 @@
|
|||
using Ryujinx.Graphics.Shader.Translation;
|
||||
|
||||
namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
|
||||
{
|
||||
public static class Varying
|
||||
{
|
||||
public static string GetName(int offset)
|
||||
{
|
||||
offset <<= 2;
|
||||
|
||||
if (offset >= AttributeConsts.UserAttributeBase &&
|
||||
offset < AttributeConsts.UserAttributeEnd)
|
||||
{
|
||||
offset -= AttributeConsts.UserAttributeBase;
|
||||
|
||||
string name = $"{ DefaultNames.OAttributePrefix}{(offset >> 4)}";
|
||||
|
||||
name += "_" + "xyzw"[(offset >> 2) & 3];
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
case AttributeConsts.PositionX:
|
||||
case AttributeConsts.PositionY:
|
||||
case AttributeConsts.PositionZ:
|
||||
case AttributeConsts.PositionW:
|
||||
return "gl_Position";
|
||||
case AttributeConsts.PointSize:
|
||||
return "gl_PointSize";
|
||||
case AttributeConsts.ClipDistance0:
|
||||
return "gl_ClipDistance[0]";
|
||||
case AttributeConsts.ClipDistance1:
|
||||
return "gl_ClipDistance[1]";
|
||||
case AttributeConsts.ClipDistance2:
|
||||
return "gl_ClipDistance[2]";
|
||||
case AttributeConsts.ClipDistance3:
|
||||
return "gl_ClipDistance[3]";
|
||||
case AttributeConsts.ClipDistance4:
|
||||
return "gl_ClipDistance[4]";
|
||||
case AttributeConsts.ClipDistance5:
|
||||
return "gl_ClipDistance[5]";
|
||||
case AttributeConsts.ClipDistance6:
|
||||
return "gl_ClipDistance[6]";
|
||||
case AttributeConsts.ClipDistance7:
|
||||
return "gl_ClipDistance[7]";
|
||||
case AttributeConsts.VertexId:
|
||||
return "gl_VertexID";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int GetSize(int offset)
|
||||
{
|
||||
switch (offset << 2)
|
||||
{
|
||||
case AttributeConsts.PositionX:
|
||||
case AttributeConsts.PositionY:
|
||||
case AttributeConsts.PositionZ:
|
||||
case AttributeConsts.PositionW:
|
||||
return 4;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue