mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-02-22 09:03:36 +00:00
Workaround for wrong last attribute on AMD (affects FFVII, STRIKERS1945, probably more)
This commit is contained in:
parent
36b3ab0741
commit
522e7933e8
2 changed files with 21 additions and 2 deletions
|
@ -125,6 +125,18 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Auto<DisposableBuffer> GetBufferWithSize(CommandBuffer commandBuffer, BufferHandle handle, bool isWrite, out int size)
|
||||||
|
{
|
||||||
|
if (TryGetBuffer(handle, out var holder))
|
||||||
|
{
|
||||||
|
size = holder.Size;
|
||||||
|
return holder.GetBuffer(commandBuffer, isWrite);
|
||||||
|
}
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public Auto<DisposableBuffer> GetBufferI8ToI16(CommandBufferScoped cbs, BufferHandle handle, int offset, int size)
|
public Auto<DisposableBuffer> GetBufferI8ToI16(CommandBufferScoped cbs, BufferHandle handle, int offset, int size)
|
||||||
{
|
{
|
||||||
if (TryGetBuffer(handle, out var holder))
|
if (TryGetBuffer(handle, out var holder))
|
||||||
|
|
|
@ -759,7 +759,7 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
|
|
||||||
if (vertexBuffer.Buffer.Handle != BufferHandle.Null)
|
if (vertexBuffer.Buffer.Handle != BufferHandle.Null)
|
||||||
{
|
{
|
||||||
var vb = Gd.BufferManager.GetBuffer(CommandBuffer, vertexBuffer.Buffer.Handle, false);
|
var vb = Gd.BufferManager.GetBuffer(CommandBuffer, vertexBuffer.Buffer.Handle, false, out int totalBufferSize);
|
||||||
if (vb != null)
|
if (vb != null)
|
||||||
{
|
{
|
||||||
int binding = i + 1;
|
int binding = i + 1;
|
||||||
|
@ -770,11 +770,18 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
(uint)vertexBuffer.Stride,
|
(uint)vertexBuffer.Stride,
|
||||||
inputRate);
|
inputRate);
|
||||||
|
|
||||||
|
int vbSize = vertexBuffer.Buffer.Size;
|
||||||
|
|
||||||
|
if (Gd.Vendor == Vendor.Amd)
|
||||||
|
{
|
||||||
|
vbSize = totalBufferSize;
|
||||||
|
}
|
||||||
|
|
||||||
_vertexBuffers[binding].Dispose();
|
_vertexBuffers[binding].Dispose();
|
||||||
_vertexBuffers[binding] = new BufferState(
|
_vertexBuffers[binding] = new BufferState(
|
||||||
vb,
|
vb,
|
||||||
vertexBuffer.Buffer.Offset,
|
vertexBuffer.Buffer.Offset,
|
||||||
vertexBuffer.Buffer.Size,
|
vbSize,
|
||||||
(ulong)vertexBuffer.Stride);
|
(ulong)vertexBuffer.Stride);
|
||||||
|
|
||||||
_vertexBuffers[binding].BindVertexBuffer(Gd, Cbs, (uint)binding);
|
_vertexBuffers[binding].BindVertexBuffer(Gd, Cbs, (uint)binding);
|
||||||
|
|
Loading…
Reference in a new issue