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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (TryGetBuffer(handle, out var holder))
|
||||
|
|
|
@ -759,7 +759,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
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)
|
||||
{
|
||||
int binding = i + 1;
|
||||
|
@ -770,11 +770,18 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
(uint)vertexBuffer.Stride,
|
||||
inputRate);
|
||||
|
||||
int vbSize = vertexBuffer.Buffer.Size;
|
||||
|
||||
if (Gd.Vendor == Vendor.Amd)
|
||||
{
|
||||
vbSize = totalBufferSize;
|
||||
}
|
||||
|
||||
_vertexBuffers[binding].Dispose();
|
||||
_vertexBuffers[binding] = new BufferState(
|
||||
vb,
|
||||
vertexBuffer.Buffer.Offset,
|
||||
vertexBuffer.Buffer.Size,
|
||||
vbSize,
|
||||
(ulong)vertexBuffer.Stride);
|
||||
|
||||
_vertexBuffers[binding].BindVertexBuffer(Gd, Cbs, (uint)binding);
|
||||
|
|
Loading…
Reference in a new issue