mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2025-06-28 13:30:47 -07:00
Implement Viewport Transform Disable (#3328)
* Initial implementation (no specialization) * Use specialization * Fix render scale, increase code gen version * Revert accidental change * Address Feedback
This commit is contained in:
@ -94,7 +94,7 @@ namespace Ryujinx.Graphics.GAL
|
||||
void SetVertexAttribs(ReadOnlySpan<VertexAttribDescriptor> vertexAttribs);
|
||||
void SetVertexBuffers(ReadOnlySpan<VertexBufferDescriptor> vertexBuffers);
|
||||
|
||||
void SetViewports(int first, ReadOnlySpan<Viewport> viewports);
|
||||
void SetViewports(int first, ReadOnlySpan<Viewport> viewports, bool disableTransform);
|
||||
|
||||
void TextureBarrier();
|
||||
void TextureBarrierTiled();
|
||||
|
@ -9,17 +9,19 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands
|
||||
public CommandType CommandType => CommandType.SetViewports;
|
||||
private int _first;
|
||||
private SpanRef<Viewport> _viewports;
|
||||
private bool _disableTransform;
|
||||
|
||||
public void Set(int first, SpanRef<Viewport> viewports)
|
||||
public void Set(int first, SpanRef<Viewport> viewports, bool disableTransform)
|
||||
{
|
||||
_first = first;
|
||||
_viewports = viewports;
|
||||
_disableTransform = disableTransform;
|
||||
}
|
||||
|
||||
public static void Run(ref SetViewportsCommand command, ThreadedRenderer threaded, IRenderer renderer)
|
||||
{
|
||||
ReadOnlySpan<Viewport> viewports = command._viewports.Get(threaded);
|
||||
renderer.Pipeline.SetViewports(command._first, viewports);
|
||||
renderer.Pipeline.SetViewports(command._first, viewports, command._disableTransform);
|
||||
command._viewports.Dispose(threaded);
|
||||
}
|
||||
}
|
||||
|
@ -304,9 +304,9 @@ namespace Ryujinx.Graphics.GAL.Multithreading
|
||||
_renderer.QueueCommand();
|
||||
}
|
||||
|
||||
public void SetViewports(int first, ReadOnlySpan<Viewport> viewports)
|
||||
public void SetViewports(int first, ReadOnlySpan<Viewport> viewports, bool disableTransform)
|
||||
{
|
||||
_renderer.New<SetViewportsCommand>().Set(first, _renderer.CopySpan(viewports));
|
||||
_renderer.New<SetViewportsCommand>().Set(first, _renderer.CopySpan(viewports), disableTransform);
|
||||
_renderer.QueueCommand();
|
||||
}
|
||||
|
||||
|
@ -72,6 +72,13 @@ namespace Ryujinx.Graphics.GAL
|
||||
UpdateGenericField(SupportBuffer.FragmentIsBgraOffset, data, Data.FragmentIsBgra.ToSpan(), offset, count);
|
||||
}
|
||||
|
||||
public void UpdateViewportInverse(Vector4<float> data)
|
||||
{
|
||||
Data.ViewportInverse = data;
|
||||
|
||||
MarkDirty(SupportBuffer.ViewportInverseOffset, SupportBuffer.FieldSize);
|
||||
}
|
||||
|
||||
public void Commit()
|
||||
{
|
||||
if (_startOffset != -1)
|
||||
|
Reference in New Issue
Block a user