mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-04-27 00:52:56 +00:00
feature: .NET 10 (ryubing/ryujinx!214)
See merge request ryubing/ryujinx!214
This commit is contained in:
@@ -8,7 +8,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
public static void Clear(BufferHandle destination, int offset, int size, uint value)
|
||||
{
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, destination.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, destination);
|
||||
|
||||
unsafe
|
||||
{
|
||||
@@ -58,8 +58,8 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
public static void Copy(BufferHandle source, BufferHandle destination, int srcOffset, int dstOffset, int size)
|
||||
{
|
||||
GL.BindBuffer(BufferTarget.CopyReadBuffer, source.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, destination.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyReadBuffer, source);
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, destination);
|
||||
|
||||
GL.CopyBufferSubData(
|
||||
BufferTarget.CopyReadBuffer,
|
||||
@@ -86,7 +86,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
nint target = renderer.PersistentBuffers.Default.GetHostArray(size);
|
||||
|
||||
GL.BindBuffer(BufferTarget.CopyReadBuffer, buffer.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyReadBuffer, buffer);
|
||||
|
||||
GL.GetBufferSubData(BufferTarget.CopyReadBuffer, (nint)offset, size, target);
|
||||
|
||||
@@ -96,13 +96,13 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
public static void Resize(BufferHandle handle, int size)
|
||||
{
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, handle.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, handle);
|
||||
GL.BufferData(BufferTarget.CopyWriteBuffer, size, nint.Zero, BufferUsageHint.StreamCopy);
|
||||
}
|
||||
|
||||
public static void SetData(BufferHandle buffer, int offset, ReadOnlySpan<byte> data)
|
||||
{
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, buffer.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, buffer);
|
||||
|
||||
unsafe
|
||||
{
|
||||
@@ -115,7 +115,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
public static void Delete(BufferHandle buffer)
|
||||
{
|
||||
GL.DeleteBuffer(buffer.ToInt32());
|
||||
GL.DeleteBuffer(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using Ryujinx.Graphics.GAL;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
@@ -14,10 +13,5 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
return Unsafe.As<ulong, T>(ref handle64);
|
||||
}
|
||||
|
||||
public static int ToInt32(this BufferHandle handle)
|
||||
{
|
||||
return (int)Unsafe.As<BufferHandle, ulong>(ref handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
start = sizeAligned;
|
||||
}
|
||||
|
||||
Span<uint> outSpan = MemoryMarshal.Cast<byte, uint>(output);
|
||||
Span<uint> outSpan = MemoryMarshal.Cast<byte, uint>(new Span<byte>(output));
|
||||
ReadOnlySpan<uint> dataSpan = MemoryMarshal.Cast<byte, uint>(data);
|
||||
for (int i = start / sizeof(uint); i < dataSpan.Length; i++)
|
||||
{
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
|
||||
SizedInternalFormat format = (SizedInternalFormat)FormatTable.GetFormatInfo(Info.Format).PixelInternalFormat;
|
||||
|
||||
GL.TexBufferRange(TextureBufferTarget.TextureBuffer, format, _buffer.ToInt32(), (nint)buffer.Offset, buffer.Size);
|
||||
GL.TexBufferRange(TextureBufferTarget.TextureBuffer, format, _buffer, (nint)buffer.Offset, buffer.Size);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
int layers,
|
||||
int levels)
|
||||
{
|
||||
TextureView srcConverted = src.Format.IsBgr() != dst.Format.IsBgr() ? BgraSwap(src) : src;
|
||||
TextureView srcConverted = src.Format.IsBgr != dst.Format.IsBgr ? BgraSwap(src) : src;
|
||||
|
||||
(int oldDrawFramebufferHandle, int oldReadFramebufferHandle) = ((Pipeline)_renderer.Pipeline).GetBoundFramebuffers();
|
||||
|
||||
@@ -87,7 +87,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
|
||||
ClearBufferMask mask = GetMask(src.Format);
|
||||
|
||||
if ((mask & (ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit)) != 0 || src.Format.IsInteger())
|
||||
if ((mask & (ClearBufferMask.DepthBufferBit | ClearBufferMask.StencilBufferBit)) != 0 || src.Format.IsInt)
|
||||
{
|
||||
linearFilter = false;
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
swizzleRgba[2] = temp2;
|
||||
swizzleRgba[3] = temp;
|
||||
}
|
||||
else if (Info.Format.IsBgr())
|
||||
else if (Info.Format.IsBgr)
|
||||
{
|
||||
// Swap B <-> R for BGRA formats, as OpenGL has no support for them
|
||||
// and we need to manually swap the components on read/write on the GPU.
|
||||
@@ -116,13 +116,13 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
{
|
||||
TextureView destinationView = (TextureView)destination;
|
||||
|
||||
bool srcIsMultisample = Target.IsMultisample();
|
||||
bool dstIsMultisample = destinationView.Target.IsMultisample();
|
||||
bool srcIsMultisample = Target.IsMultisample;
|
||||
bool dstIsMultisample = destinationView.Target.IsMultisample;
|
||||
|
||||
if (dstIsMultisample != srcIsMultisample && Info.Format.IsDepthOrStencil())
|
||||
if (dstIsMultisample != srcIsMultisample && Info.Format.IsDepthOrStencil)
|
||||
{
|
||||
int layers = Math.Min(Info.GetLayers(), destinationView.Info.GetLayers() - firstLayer);
|
||||
CopyWithBlitForDepthMS(destinationView, 0, firstLayer, layers);
|
||||
CopyWithBlitForDepthMultisample(destinationView, 0, firstLayer, layers);
|
||||
}
|
||||
else if (!dstIsMultisample && srcIsMultisample)
|
||||
{
|
||||
@@ -140,7 +140,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
int levels = Math.Min(Info.Levels, destinationView.Info.Levels - firstLevel);
|
||||
_renderer.TextureCopyIncompatible.CopyIncompatibleFormats(this, destinationView, 0, firstLayer, 0, firstLevel, layers, levels);
|
||||
}
|
||||
else if (destinationView.Format.IsDepthOrStencil() != Format.IsDepthOrStencil())
|
||||
else if (destinationView.Format.IsDepthOrStencil != Format.IsDepthOrStencil)
|
||||
{
|
||||
int layers = Math.Min(Info.GetLayers(), destinationView.Info.GetLayers() - firstLayer);
|
||||
int levels = Math.Min(Info.Levels, destinationView.Info.Levels - firstLevel);
|
||||
@@ -172,12 +172,12 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
{
|
||||
TextureView destinationView = (TextureView)destination;
|
||||
|
||||
bool srcIsMultisample = Target.IsMultisample();
|
||||
bool dstIsMultisample = destinationView.Target.IsMultisample();
|
||||
bool srcIsMultisample = Target.IsMultisample;
|
||||
bool dstIsMultisample = destinationView.Target.IsMultisample;
|
||||
|
||||
if (dstIsMultisample != srcIsMultisample && Info.Format.IsDepthOrStencil())
|
||||
if (dstIsMultisample != srcIsMultisample && Info.Format.IsDepthOrStencil)
|
||||
{
|
||||
CopyWithBlitForDepthMS(destinationView, srcLayer, dstLayer, 1);
|
||||
CopyWithBlitForDepthMultisample(destinationView, srcLayer, dstLayer, 1);
|
||||
}
|
||||
else if (!dstIsMultisample && srcIsMultisample)
|
||||
{
|
||||
@@ -191,7 +191,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
{
|
||||
_renderer.TextureCopyIncompatible.CopyIncompatibleFormats(this, destinationView, srcLayer, dstLayer, srcLevel, dstLevel, 1, 1);
|
||||
}
|
||||
else if (destinationView.Format.IsDepthOrStencil() != Format.IsDepthOrStencil())
|
||||
else if (destinationView.Format.IsDepthOrStencil != Format.IsDepthOrStencil)
|
||||
{
|
||||
int minWidth = Math.Min(Width, destinationView.Width);
|
||||
int minHeight = Math.Min(Height, destinationView.Height);
|
||||
@@ -204,7 +204,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
}
|
||||
}
|
||||
|
||||
private void CopyWithBlitForDepthMS(TextureView destinationView, int srcLayer, int dstLayer, int layers)
|
||||
private void CopyWithBlitForDepthMultisample(TextureView destinationView, int srcLayer, int dstLayer, int layers)
|
||||
{
|
||||
// This is currently used for multisample <-> non-multisample copies.
|
||||
// We can't do that with compute because it's not possible to write depth textures on compute.
|
||||
@@ -216,9 +216,9 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
Extents2D srcRegion = new(0, 0, Width, Height);
|
||||
Extents2D dstRegion = new(0, 0, destinationView.Width, destinationView.Height);
|
||||
|
||||
if (destinationView.Target.IsMultisample())
|
||||
if (destinationView.Target.IsMultisample)
|
||||
{
|
||||
TextureView intermmediate = _renderer.TextureCopy.IntermediatePool.GetOrCreateWithAtLeast(
|
||||
TextureView intermediate = _renderer.TextureCopy.IntermediatePool.GetOrCreateWithAtLeast(
|
||||
Info.Target,
|
||||
Info.BlockWidth,
|
||||
Info.BlockHeight,
|
||||
@@ -230,8 +230,8 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
1,
|
||||
1);
|
||||
|
||||
_renderer.TextureCopy.Copy(this, intermmediate, srcRegion, dstRegion, false);
|
||||
_renderer.TextureCopy.Copy(intermmediate, destinationView, dstRegion, dstRegion, false, srcLayer, dstLayer, 0, 0, layers, 1);
|
||||
_renderer.TextureCopy.Copy(this, intermediate, srcRegion, dstRegion, false);
|
||||
_renderer.TextureCopy.Copy(intermediate, destinationView, dstRegion, dstRegion, false, srcLayer, dstLayer, 0, 0, layers, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -242,7 +242,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
_ => Target,
|
||||
};
|
||||
|
||||
TextureView intermmediate = _renderer.TextureCopy.IntermediatePool.GetOrCreateWithAtLeast(
|
||||
TextureView intermediate = _renderer.TextureCopy.IntermediatePool.GetOrCreateWithAtLeast(
|
||||
target,
|
||||
Info.BlockWidth,
|
||||
Info.BlockHeight,
|
||||
@@ -254,8 +254,8 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
1,
|
||||
1);
|
||||
|
||||
_renderer.TextureCopy.Copy(this, intermmediate, srcRegion, srcRegion, false);
|
||||
_renderer.TextureCopy.Copy(intermmediate, destinationView, srcRegion, dstRegion, false, srcLayer, dstLayer, 0, 0, layers, 1);
|
||||
_renderer.TextureCopy.Copy(this, intermediate, srcRegion, srcRegion, false);
|
||||
_renderer.TextureCopy.Copy(intermediate, destinationView, srcRegion, dstRegion, false, srcLayer, dstLayer, 0, 0, layers, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,14 +305,12 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
{
|
||||
return PinnedSpan<byte>.UnsafeFromSpan(_renderer.PersistentBuffers.Default.GetTextureData(this, size, layer, level));
|
||||
}
|
||||
else
|
||||
{
|
||||
nint target = _renderer.PersistentBuffers.Default.GetHostArray(size);
|
||||
|
||||
int offset = WriteTo2D(target, layer, level);
|
||||
nint target = _renderer.PersistentBuffers.Default.GetHostArray(size);
|
||||
|
||||
return new PinnedSpan<byte>((byte*)target.ToPointer() + offset, size);
|
||||
}
|
||||
int offset = WriteTo2D(target, layer, level);
|
||||
|
||||
return new PinnedSpan<byte>((byte*)target.ToPointer() + offset, size);
|
||||
}
|
||||
|
||||
public void CopyTo(BufferRange range, int layer, int level, int stride)
|
||||
@@ -322,7 +320,7 @@ namespace Ryujinx.Graphics.OpenGL.Image
|
||||
throw new NotSupportedException("Stride conversion for texture copy to buffer not supported.");
|
||||
}
|
||||
|
||||
GL.BindBuffer(BufferTarget.PixelPackBuffer, range.Handle.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.PixelPackBuffer, range.Handle);
|
||||
|
||||
FormatInfo format = FormatTable.GetFormatInfo(Info.Format);
|
||||
if (format.PixelFormat == PixelFormat.DepthStencil)
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
public void Map(BufferHandle handle, int size)
|
||||
{
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, handle.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, handle);
|
||||
nint ptr = GL.MapBufferRange(BufferTarget.CopyWriteBuffer, nint.Zero, size, BufferAccessMask.MapReadBit | BufferAccessMask.MapPersistentBit);
|
||||
|
||||
_maps[handle] = ptr;
|
||||
@@ -36,7 +36,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
if (_maps.ContainsKey(handle))
|
||||
{
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, handle.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, handle);
|
||||
GL.UnmapBuffer(BufferTarget.CopyWriteBuffer);
|
||||
|
||||
_maps.Remove(handle);
|
||||
@@ -140,7 +140,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
{
|
||||
EnsureBuffer(size);
|
||||
|
||||
GL.BindBuffer(BufferTarget.CopyReadBuffer, buffer.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.CopyReadBuffer, buffer);
|
||||
GL.BindBuffer(BufferTarget.CopyWriteBuffer, _copyBufferHandle);
|
||||
|
||||
GL.CopyBufferSubData(BufferTarget.CopyReadBuffer, BufferTarget.CopyWriteBuffer, (nint)offset, nint.Zero, size);
|
||||
|
||||
@@ -587,7 +587,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
_vertexArray.SetRangeOfIndexBuffer();
|
||||
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle.ToInt32());
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle);
|
||||
|
||||
GL.DrawElementsIndirect(_primitiveType, _elementsType, (nint)indirectBuffer.Offset);
|
||||
|
||||
@@ -608,8 +608,8 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
_vertexArray.SetRangeOfIndexBuffer();
|
||||
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle.ToInt32());
|
||||
GL.BindBuffer((BufferTarget)All.ParameterBuffer, parameterBuffer.Handle.ToInt32());
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle);
|
||||
GL.BindBuffer((BufferTarget)All.ParameterBuffer, parameterBuffer.Handle);
|
||||
|
||||
GL.MultiDrawElementsIndirectCount(
|
||||
_primitiveType,
|
||||
@@ -634,7 +634,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
PreDrawVbUnbounded();
|
||||
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle.ToInt32());
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle);
|
||||
|
||||
GL.DrawArraysIndirect(_primitiveType, (nint)indirectBuffer.Offset);
|
||||
|
||||
@@ -651,8 +651,8 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
PreDrawVbUnbounded();
|
||||
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle.ToInt32());
|
||||
GL.BindBuffer((BufferTarget)All.ParameterBuffer, parameterBuffer.Handle.ToInt32());
|
||||
GL.BindBuffer((BufferTarget)All.DrawIndirectBuffer, indirectBuffer.Handle);
|
||||
GL.BindBuffer((BufferTarget)All.ParameterBuffer, parameterBuffer.Handle);
|
||||
|
||||
GL.MultiDrawArraysIndirectCount(
|
||||
_primitiveType,
|
||||
@@ -812,10 +812,10 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
EnsureFramebuffer();
|
||||
|
||||
_framebuffer.SetDualSourceBlend(
|
||||
blend.ColorSrcFactor.IsDualSource() ||
|
||||
blend.ColorDstFactor.IsDualSource() ||
|
||||
blend.AlphaSrcFactor.IsDualSource() ||
|
||||
blend.AlphaDstFactor.IsDualSource());
|
||||
blend.ColorSrcFactor.IsDualSource ||
|
||||
blend.ColorDstFactor.IsDualSource ||
|
||||
blend.AlphaSrcFactor.IsDualSource ||
|
||||
blend.AlphaDstFactor.IsDualSource);
|
||||
|
||||
if (_blendConstant != blend.BlendConstant)
|
||||
{
|
||||
@@ -1178,7 +1178,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
if (color != null)
|
||||
{
|
||||
int isBgra = color.Format.IsBgr() ? 1 : 0;
|
||||
int isBgra = color.Format.IsBgr ? 1 : 0;
|
||||
|
||||
if (_fpIsBgra[index].X != isBgra)
|
||||
{
|
||||
@@ -1349,7 +1349,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
Buffer.Resize(_tfbs[i], buffer.Size);
|
||||
Buffer.Copy(buffer.Handle, _tfbs[i], buffer.Offset, 0, buffer.Size);
|
||||
GL.BindBufferBase(BufferRangeTarget.TransformFeedbackBuffer, i, _tfbs[i].ToInt32());
|
||||
GL.BindBufferBase(BufferRangeTarget.TransformFeedbackBuffer, i, _tfbs[i]);
|
||||
}
|
||||
|
||||
if (_tfEnabled)
|
||||
@@ -1454,7 +1454,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
continue;
|
||||
}
|
||||
|
||||
GL.BindBufferRange(target, assignment.Binding, buffer.Handle.ToInt32(), (nint)buffer.Offset, buffer.Size);
|
||||
GL.BindBufferRange(target, assignment.Binding, buffer.Handle, (nint)buffer.Offset, buffer.Size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
minVertexCount = vertexCount;
|
||||
}
|
||||
|
||||
GL.BindVertexBuffer(bindingIndex, vb.Buffer.Handle.ToInt32(), (nint)vb.Buffer.Offset, vb.Stride);
|
||||
GL.BindVertexBuffer(bindingIndex, vb.Buffer.Handle, (nint)vb.Buffer.Offset, vb.Stride);
|
||||
GL.VertexBindingDivisor(bindingIndex, vb.Divisor);
|
||||
_vertexBuffersInUse |= 1u << bindingIndex;
|
||||
}
|
||||
@@ -134,19 +134,19 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
public void SetIndexBuffer(BufferRange range)
|
||||
{
|
||||
_indexBuffer = range;
|
||||
GL.BindBuffer(BufferTarget.ElementArrayBuffer, range.Handle.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.ElementArrayBuffer, range.Handle);
|
||||
}
|
||||
|
||||
public void SetRangeOfIndexBuffer()
|
||||
{
|
||||
Buffer.Resize(_tempIndexBuffer, _indexBuffer.Size);
|
||||
Buffer.Copy(_indexBuffer.Handle, _tempIndexBuffer, _indexBuffer.Offset, 0, _indexBuffer.Size);
|
||||
GL.BindBuffer(BufferTarget.ElementArrayBuffer, _tempIndexBuffer.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.ElementArrayBuffer, _tempIndexBuffer);
|
||||
}
|
||||
|
||||
public void RestoreIndexBuffer()
|
||||
{
|
||||
GL.BindBuffer(BufferTarget.ElementArrayBuffer, _indexBuffer.Handle.ToInt32());
|
||||
GL.BindBuffer(BufferTarget.ElementArrayBuffer, _indexBuffer.Handle);
|
||||
}
|
||||
|
||||
public void PreDraw(int vertexCount)
|
||||
@@ -188,7 +188,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
Buffer.Copy(vb.Buffer.Handle, tempVertexBuffer, vb.Buffer.Offset, currentTempVbOffset, vb.Buffer.Size);
|
||||
Buffer.Clear(tempVertexBuffer, currentTempVbOffset + vb.Buffer.Size, requiredSize - vb.Buffer.Size, 0);
|
||||
|
||||
GL.BindVertexBuffer(vbIndex, tempVertexBuffer.ToInt32(), (nint)currentTempVbOffset, vb.Stride);
|
||||
GL.BindVertexBuffer(vbIndex, tempVertexBuffer, (nint)currentTempVbOffset, vb.Stride);
|
||||
|
||||
currentTempVbOffset += requiredSize;
|
||||
_vertexBuffersLimited |= 1u << vbIndex;
|
||||
@@ -234,7 +234,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
ref VertexBufferDescriptor vb = ref _vertexBuffers[vbIndex];
|
||||
|
||||
GL.BindVertexBuffer(vbIndex, vb.Buffer.Handle.ToInt32(), (nint)vb.Buffer.Offset, vb.Stride);
|
||||
GL.BindVertexBuffer(vbIndex, vb.Buffer.Handle, (nint)vb.Buffer.Offset, vb.Stride);
|
||||
|
||||
buffersLimited &= ~(1u << vbIndex);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
GL.BindFramebuffer(FramebufferTarget.DrawFramebuffer, drawFramebuffer);
|
||||
GL.BindFramebuffer(FramebufferTarget.ReadFramebuffer, readFramebuffer);
|
||||
|
||||
TextureView viewConverted = view.Format.IsBgr() ? _renderer.TextureCopy.BgraSwap(view) : view;
|
||||
TextureView viewConverted = view.Format.IsBgr ? _renderer.TextureCopy.BgraSwap(view) : view;
|
||||
|
||||
UpdateEffect();
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
viewConverted = _antiAliasing.Run(viewConverted, _width, _height);
|
||||
|
||||
if (viewConverted.Format.IsBgr())
|
||||
if (viewConverted.Format.IsBgr)
|
||||
{
|
||||
TextureView swappedView = _renderer.TextureCopy.BgraSwap(viewConverted);
|
||||
|
||||
@@ -152,14 +152,14 @@ namespace Ryujinx.Graphics.OpenGL
|
||||
|
||||
if (ScreenCaptureRequested)
|
||||
{
|
||||
CaptureFrame(srcX0, srcY0, srcX1, srcY1, view.Format.IsBgr(), crop.FlipX, crop.FlipY);
|
||||
CaptureFrame(srcX0, srcY0, srcX1, srcY1, view.Format.IsBgr, crop.FlipX, crop.FlipY);
|
||||
|
||||
ScreenCaptureRequested = false;
|
||||
}
|
||||
|
||||
if (_scalingFilter != null)
|
||||
{
|
||||
if (viewConverted.Format.IsBgr() && !_isBgra)
|
||||
if (viewConverted.Format.IsBgr && !_isBgra)
|
||||
{
|
||||
RecreateUpscalingTexture(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user