Implement Geometry shaders (#280)
* Implement Geometry shaders * Add EmitVertex() and EndPrimitive() * Read output geometry data from header * Stub Vmad * Add Iadd_I32 * Stub Mov_S (S2R) * Stub Isberd * Change vertex index to gpr39 in Abuf * Add stub messages for consistency * Do not print input block when there is no attributes * Use GL_ARB_enhanced_layouts * Skip geometry shaders when there's no GL_ARB_enhanced_layouts * Address feedback * Address feedback
This commit is contained in:
parent
bdb6cbb435
commit
cd203e98f2
15 changed files with 426 additions and 48 deletions
43
Ryujinx.Graphics/Gal/OpenGL/OGLExtension.cs
Normal file
43
Ryujinx.Graphics/Gal/OpenGL/OGLExtension.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
using OpenTK.Graphics.OpenGL;
|
||||
|
||||
namespace Ryujinx.Graphics.Gal.OpenGL
|
||||
{
|
||||
static class OGLExtension
|
||||
{
|
||||
private static bool Initialized = false;
|
||||
|
||||
private static bool EnhancedLayouts;
|
||||
|
||||
public static bool HasEnhancedLayouts()
|
||||
{
|
||||
EnsureInitialized();
|
||||
|
||||
return EnhancedLayouts;
|
||||
}
|
||||
|
||||
private static void EnsureInitialized()
|
||||
{
|
||||
if (Initialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
EnhancedLayouts = HasExtension("GL_ARB_enhanced_layouts");
|
||||
}
|
||||
|
||||
private static bool HasExtension(string Name)
|
||||
{
|
||||
int NumExtensions = GL.GetInteger(GetPName.NumExtensions);
|
||||
|
||||
for (int Extension = 0; Extension < NumExtensions; Extension++)
|
||||
{
|
||||
if (GL.GetString(StringNameIndexed.Extensions, Extension) == Name)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue