aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Gpu/Engine
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-07-11 14:07:41 -0300
committerGitHub <noreply@github.com>2023-07-11 14:07:41 -0300
commit9c6071a645e72b56e42cf687f9c1a182be2673ac (patch)
treef5efb327ff38f69a7630745f39f06caef01211e6 /src/Ryujinx.Graphics.Gpu/Engine
parentfa32ef92755a51a2567a1bcbb35fb34886b5f979 (diff)
Move support buffer update out of the backends (#5411)
* Move support buffer update out of the backends * Fix render scale init and remove redundant state from SupportBufferUpdater * Stop passing texture scale to the backends * XML docs for SupportBufferUpdater
Diffstat (limited to 'src/Ryujinx.Graphics.Gpu/Engine')
-rw-r--r--src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs8
-rw-r--r--src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs17
2 files changed, 19 insertions, 6 deletions
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs
index 0a813ee5..247752ca 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/SemaphoreUpdater.cs
@@ -177,13 +177,15 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
resultHandler(null, (ulong)_state.State.SemaphorePayload);
break;
case ReportCounterType.SamplesPassed:
- counter = _context.Renderer.ReportCounter(CounterType.SamplesPassed, resultHandler, false);
+ float scale = _channel.TextureManager.RenderTargetScale;
+ float divisor = scale * scale;
+ counter = _context.Renderer.ReportCounter(CounterType.SamplesPassed, resultHandler, divisor, false);
break;
case ReportCounterType.PrimitivesGenerated:
- counter = _context.Renderer.ReportCounter(CounterType.PrimitivesGenerated, resultHandler, false);
+ counter = _context.Renderer.ReportCounter(CounterType.PrimitivesGenerated, resultHandler, 1f, false);
break;
case ReportCounterType.TransformFeedbackPrimitivesWritten:
- counter = _context.Renderer.ReportCounter(CounterType.TransformFeedbackPrimitivesWritten, resultHandler, false);
+ counter = _context.Renderer.ReportCounter(CounterType.TransformFeedbackPrimitivesWritten, resultHandler, 1f, false);
break;
}
diff --git a/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs b/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs
index 34439657..b4f56245 100644
--- a/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs
+++ b/src/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs
@@ -495,6 +495,11 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
{
clipRegionHeight = color.Height / samplesInY;
}
+
+ if (!_context.Capabilities.SupportsBgraFormat)
+ {
+ _context.SupportBufferUpdater.SetRenderTargetIsBgra(index, color.Format.IsBgr());
+ }
}
}
@@ -539,7 +544,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
if (oldScale != _channel.TextureManager.RenderTargetScale)
{
- _context.Renderer.Pipeline.SetRenderTargetScale(_channel.TextureManager.RenderTargetScale);
+ _context.SupportBufferUpdater.SetRenderTargetScale(_channel.TextureManager.RenderTargetScale);
UpdateViewportTransform();
UpdateScissorState();
@@ -758,9 +763,15 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed
}
_context.Renderer.Pipeline.SetDepthMode(GetDepthMode());
- _context.Renderer.Pipeline.SetViewports(viewports, disableTransform);
+ _context.Renderer.Pipeline.SetViewports(viewports);
+
+ _context.SupportBufferUpdater.SetViewportTransformDisable(
+ viewports[0].Region.Width,
+ viewports[0].Region.Height,
+ _channel.TextureManager.RenderTargetScale,
+ disableTransform);
- _currentSpecState.SetViewportTransformDisable(_state.State.ViewportTransformEnable == 0);
+ _currentSpecState.SetViewportTransformDisable(disableTransform);
_currentSpecState.SetDepthMode(GetDepthMode() == DepthMode.MinusOneToOne);
}