Implement GPU primitive restart (#221)

This commit is contained in:
ReinUsesLisp 2018-07-08 13:14:35 -03:00 committed by gdkchan
parent dc04b5465f
commit 6479c3e484
4 changed files with 47 additions and 0 deletions

View file

@ -85,6 +85,7 @@ namespace Ryujinx.HLE.Gpu.Engines
SetDepth();
SetStencil();
SetAlphaBlending();
SetPrimitiveRestart();
UploadTextures(Vmm, Keys);
UploadUniforms(Vmm);
@ -389,6 +390,29 @@ namespace Ryujinx.HLE.Gpu.Engines
}
}
private void SetPrimitiveRestart()
{
bool Enable = (ReadRegister(NvGpuEngine3dReg.PrimRestartEnable) & 1) != 0;
if (Enable)
{
Gpu.Renderer.Rasterizer.EnablePrimitiveRestart();
}
else
{
Gpu.Renderer.Rasterizer.DisablePrimitiveRestart();
}
if (!Enable)
{
return;
}
uint Index = (uint)ReadRegister(NvGpuEngine3dReg.PrimRestartIndex);
Gpu.Renderer.Rasterizer.SetPrimitiveRestartIndex(Index);
}
private void UploadTextures(NvGpuVmm Vmm, long[] Keys)
{
long BaseShPosition = MakeInt64From2xInt32(NvGpuEngine3dReg.ShaderAddress);