Address some feedback
This commit is contained in:
parent
2779964494
commit
5394bbcdf9
7 changed files with 10 additions and 21 deletions
|
@ -5,6 +5,7 @@ using Ryujinx.Graphics.GAL;
|
|||
using Ryujinx.Graphics.Gpu.Engine.GPFifo;
|
||||
using Ryujinx.Graphics.Gpu.Engine.Threed;
|
||||
using Ryujinx.Graphics.Gpu.Engine.Types;
|
||||
using Ryujinx.Graphics.Gpu.Memory;
|
||||
using Ryujinx.Memory.Range;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -495,8 +496,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.MME
|
|||
|
||||
ulong indirectBufferSize = (ulong)maxDrawCount * (ulong)stride;
|
||||
|
||||
MultiRange indirectBufferRange = bufferCache.TranslateAndCreateMultiBuffers(_processor.MemoryManager, indirectBufferGpuVa, indirectBufferSize, Memory.BufferStage.Indirect);
|
||||
MultiRange parameterBufferRange = bufferCache.TranslateAndCreateMultiBuffers(_processor.MemoryManager, parameterBufferGpuVa, 4, Memory.BufferStage.Indirect);
|
||||
MultiRange indirectBufferRange = bufferCache.TranslateAndCreateMultiBuffers(_processor.MemoryManager, indirectBufferGpuVa, indirectBufferSize, BufferStage.Indirect);
|
||||
MultiRange parameterBufferRange = bufferCache.TranslateAndCreateMultiBuffers(_processor.MemoryManager, parameterBufferGpuVa, 4, BufferStage.Indirect);
|
||||
|
||||
_processor.ThreedClass.DrawIndirect(
|
||||
topology,
|
||||
|
|
|
@ -415,7 +415,7 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed.ComputeDraw
|
|||
ulong misalign = address & ((ulong)_context.Capabilities.TextureBufferOffsetAlignment - 1);
|
||||
BufferRange range = memoryManager.Physical.BufferCache.GetBufferRange(
|
||||
memoryManager.GetPhysicalRegions(address + indexOffset - misalign, size + misalign),
|
||||
Gpu.Memory.BufferStage.IndexBuffer);
|
||||
BufferStage.IndexBuffer);
|
||||
misalignedOffset = (int)misalign >> shift;
|
||||
|
||||
SetIndexBufferTexture(reservations, range, format);
|
||||
|
|
|
@ -670,7 +670,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
|||
/// Gets an action that disposes the backing buffer using its current handle.
|
||||
/// Useful for deleting an old copy of the buffer after the handle changes.
|
||||
/// </summary>
|
||||
/// <returns>An action that flushes data from the specified range, using the buffer handle at the time this the method is generated</returns>
|
||||
/// <returns>An action that flushes data from the specified range, using the buffer handle at the time the method is generated</returns>
|
||||
public Action GetSnapshotDisposeAction()
|
||||
{
|
||||
BufferHandle handle = Handle;
|
||||
|
@ -687,7 +687,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
|||
/// Gets an action that flushes a range of the buffer using its current handle.
|
||||
/// Useful for flushing data from old copies of the buffer after the handle changes.
|
||||
/// </summary>
|
||||
/// <returns>An action that flushes data from the specified range, using the buffer handle at the time this the method is generated</returns>
|
||||
/// <returns>An action that flushes data from the specified range, using the buffer handle at the time the method is generated</returns>
|
||||
public BufferFlushAction GetSnapshotFlushAction()
|
||||
{
|
||||
BufferHandle handle = Handle;
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
|||
/// <summary>
|
||||
/// Initialize the buffer backing state for a given parent buffer.
|
||||
/// </summary>
|
||||
/// <param name="context">Gpu context</param>
|
||||
/// <param name="context">GPU context</param>
|
||||
/// <param name="parent">Parent buffer</param>
|
||||
/// <param name="stage">Initial buffer stage</param>
|
||||
/// <param name="baseBuffers">Buffers to inherit state from</param>
|
||||
|
|
|
@ -81,13 +81,13 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
|||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static BufferStage TextureBuffer(ShaderStage shaderStage, TextureUsageFlags flags)
|
||||
{
|
||||
return (BufferStage)shaderStage | FromUsage(flags);
|
||||
return FromShaderStage(shaderStage) | FromUsage(flags);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static BufferStage GraphicsStorage(int stageIndex, BufferUsageFlags flags)
|
||||
{
|
||||
return (BufferStage)(stageIndex + 1) | FromUsage(flags);
|
||||
return FromShaderStage(stageIndex) | FromUsage(flags);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
|
|
|
@ -46,7 +46,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
private bool _lastAccessIsWrite;
|
||||
|
||||
private BufferAllocationType _baseType;
|
||||
private readonly BufferAllocationType _baseType;
|
||||
private readonly BufferAllocationType _activeType;
|
||||
|
||||
private readonly ReaderWriterLockSlim _flushLock;
|
||||
|
@ -111,14 +111,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
_flushLock = new ReaderWriterLockSlim();
|
||||
}
|
||||
|
||||
public void Pin()
|
||||
{
|
||||
if (_baseType == BufferAllocationType.Auto)
|
||||
{
|
||||
_baseType = _activeType;
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe Auto<DisposableBufferView> CreateView(VkFormat format, int offset, int size, Action invalidateView)
|
||||
{
|
||||
var bufferViewCreateInfo = new BufferViewCreateInfo
|
||||
|
|
|
@ -165,10 +165,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
if (TryGetBuffer(range.Handle, out var existingHolder))
|
||||
{
|
||||
// Since this buffer now also owns the memory from the referenced buffer,
|
||||
// we pin it to ensure the memory location will not change.
|
||||
existingHolder.Pin();
|
||||
|
||||
(var memory, var offset) = existingHolder.GetDeviceMemoryAndOffset();
|
||||
|
||||
memoryBinds[index] = new SparseMemoryBind()
|
||||
|
|
Loading…
Add table
Reference in a new issue