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

@ -79,6 +79,8 @@ namespace Ryujinx.HLE.Gpu.Engines
Gpu.Renderer.Shader.BindProgram();
SetCullFace();
SetDepth();
SetAlphaBlending();
UploadTextures(Vmm, Keys);
@ -98,8 +100,7 @@ namespace Ryujinx.HLE.Gpu.Engines
SetFrameBuffer(Vmm, 0);
//TODO: Enable this once the frame buffer problems are fixed.
//Gpu.Renderer.ClearBuffers(Layer, Flags);
Gpu.Renderer.Rasterizer.ClearBuffers(Layer, Flags);
}
private void SetFrameBuffer(NvGpuVmm Vmm, int FbIndex)
@ -177,6 +178,16 @@ namespace Ryujinx.HLE.Gpu.Engines
throw new ArgumentOutOfRangeException(nameof(Program));
}
private void SetCullFace()
{
//TODO.
}
private void SetDepth()
{
//TODO.
}
private void SetAlphaBlending()
{
//TODO: Support independent blend properly.
@ -434,16 +445,7 @@ namespace Ryujinx.HLE.Gpu.Engines
int Stride = Control & 0xfff;
long VbSize = 0;
if (IndexCount != 0)
{
VbSize = (VertexEndPos - VertexPosition) + 1;
}
else
{
VbSize = VertexCount * Stride;
}
long VbSize = (VertexEndPos - VertexPosition) + 1;
bool VboCached = Gpu.Renderer.Rasterizer.IsVboCached(VertexPosition, VbSize);