Fix vertex buffer size on the gpu when the draw vertex count is less than the buffer size, added a few more registers (currently not implemented)

This commit is contained in:
gdkchan 2018-06-27 01:32:28 -03:00
parent af5f059d4e
commit 900a84ae0a
7 changed files with 80 additions and 13 deletions

View file

@ -5,6 +5,17 @@ namespace Ryujinx.Graphics.Gal.OpenGL
{
static class OGLEnumConverter
{
public static DepthFunction GetDepthFunc(GalComparisonOp Func)
{
if ((int)Func >= (int)DepthFunction.Never &&
(int)Func <= (int)DepthFunction.Always)
{
return (DepthFunction)Func;
}
throw new ArgumentException(nameof(Func));
}
public static DrawElementsType GetDrawElementsType(GalIndexFormat Format)
{
switch (Format)

View file

@ -106,6 +106,31 @@ namespace Ryujinx.Graphics.Gal.OpenGL
return IboCache.TryGetSize(Key, out long Size) && Size == DataSize;
}
public void EnableCullFace()
{
GL.Enable(EnableCap.CullFace);
}
public void DisableCullFace()
{
GL.Disable(EnableCap.CullFace);
}
public void EnableDepthTest()
{
GL.Enable(EnableCap.DepthTest);
}
public void DisableDepthTest()
{
GL.Disable(EnableCap.DepthTest);
}
public void SetDepthFunction(GalComparisonOp Func)
{
GL.DepthFunc(OGLEnumConverter.GetDepthFunc(Func));
}
public void CreateVbo(long Key, byte[] Buffer)
{
int Handle = GL.GenBuffer();

View file

@ -283,7 +283,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
return FreeBinding;
}
BindUniformBuffersIfNotNull(Current.Vertex);
BindUniformBuffersIfNotNull(Current.TessControl);
BindUniformBuffersIfNotNull(Current.TessEvaluation);