mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-05-29 16:39:15 +00:00
Compare commits
2 Commits
Canary-1.3
...
Canary-1.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7772462f1 | ||
|
|
3473044c6e |
@@ -6107,8 +6107,8 @@
|
|||||||
"de_DE": "",
|
"de_DE": "",
|
||||||
"el_GR": "",
|
"el_GR": "",
|
||||||
"en_US": "Enable Net Logs",
|
"en_US": "Enable Net Logs",
|
||||||
"es_ES": "Habilitar registros de red.",
|
"es_ES": "Habilitar Registros de Red.",
|
||||||
"fr_FR": "",
|
"fr_FR": "Activer les Journaux Réseau.",
|
||||||
"he_IL": "",
|
"he_IL": "",
|
||||||
"it_IT": "",
|
"it_IT": "",
|
||||||
"ja_JP": "",
|
"ja_JP": "",
|
||||||
@@ -17108,7 +17108,7 @@
|
|||||||
"el_GR": "",
|
"el_GR": "",
|
||||||
"en_US": "Prints network log messages in the console.",
|
"en_US": "Prints network log messages in the console.",
|
||||||
"es_ES": "Imprimir registros de red en la consola.",
|
"es_ES": "Imprimir registros de red en la consola.",
|
||||||
"fr_FR": "",
|
"fr_FR": "Affiche les journaux réseau dans la console.",
|
||||||
"he_IL": "",
|
"he_IL": "",
|
||||||
"it_IT": "",
|
"it_IT": "",
|
||||||
"ja_JP": "",
|
"ja_JP": "",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Buffers;
|
||||||
using VkBuffer = Silk.NET.Vulkan.Buffer;
|
using VkBuffer = Silk.NET.Vulkan.Buffer;
|
||||||
|
|
||||||
namespace Ryujinx.Graphics.Vulkan
|
namespace Ryujinx.Graphics.Vulkan
|
||||||
@@ -61,29 +62,65 @@ namespace Ryujinx.Graphics.Vulkan
|
|||||||
{
|
{
|
||||||
if (_count != 0)
|
if (_count != 0)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _count; i++)
|
int count = (int)_count;
|
||||||
{
|
uint baseBinding = _baseBinding;
|
||||||
_buffers[i] = _bufferAutos[i].Get(cbs, _bufferOffsetsForGet[i], _bufferSizesForGet[i]).Value;
|
|
||||||
_bufferAutos[i] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_gd.Capabilities.SupportsExtendedDynamicState)
|
|
||||||
{
|
|
||||||
_gd.ExtendedDynamicStateApi.CmdBindVertexBuffers2(
|
|
||||||
cbs.CommandBuffer,
|
|
||||||
_baseBinding,
|
|
||||||
_count,
|
|
||||||
_buffers.Pointer,
|
|
||||||
_offsets.Pointer,
|
|
||||||
_sizes.Pointer,
|
|
||||||
_strides.Pointer);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_gd.Api.CmdBindVertexBuffers(cbs.CommandBuffer, _baseBinding, _count, _buffers.Pointer, _offsets.Pointer);
|
|
||||||
}
|
|
||||||
|
|
||||||
_count = 0;
|
_count = 0;
|
||||||
|
|
||||||
|
Auto<DisposableBuffer>[] autos = ArrayPool<Auto<DisposableBuffer>>.Shared.Rent(count);
|
||||||
|
Span<int> getOffsets = stackalloc int[Constants.MaxVertexBuffers];
|
||||||
|
Span<int> getSizes = stackalloc int[Constants.MaxVertexBuffers];
|
||||||
|
Span<ulong> offsets = stackalloc ulong[Constants.MaxVertexBuffers];
|
||||||
|
Span<ulong> sizes = stackalloc ulong[Constants.MaxVertexBuffers];
|
||||||
|
Span<ulong> strides = stackalloc ulong[Constants.MaxVertexBuffers];
|
||||||
|
Span<VkBuffer> buffers = stackalloc VkBuffer[Constants.MaxVertexBuffers];
|
||||||
|
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
autos[i] = _bufferAutos[i];
|
||||||
|
_bufferAutos[i] = null;
|
||||||
|
getOffsets[i] = _bufferOffsetsForGet[i];
|
||||||
|
getSizes[i] = _bufferSizesForGet[i];
|
||||||
|
offsets[i] = _offsets[i];
|
||||||
|
sizes[i] = _sizes[i];
|
||||||
|
strides[i] = _strides[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
buffers[i] = autos[i].Get(cbs, getOffsets[i], getSizes[i]).Value;
|
||||||
|
autos[i] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
_buffers[i] = buffers[i];
|
||||||
|
_offsets[i] = offsets[i];
|
||||||
|
_sizes[i] = sizes[i];
|
||||||
|
_strides[i] = strides[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_gd.Capabilities.SupportsExtendedDynamicState)
|
||||||
|
{
|
||||||
|
_gd.ExtendedDynamicStateApi.CmdBindVertexBuffers2(
|
||||||
|
cbs.CommandBuffer,
|
||||||
|
baseBinding,
|
||||||
|
(uint)count,
|
||||||
|
_buffers.Pointer,
|
||||||
|
_offsets.Pointer,
|
||||||
|
_sizes.Pointer,
|
||||||
|
_strides.Pointer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_gd.Api.CmdBindVertexBuffers(cbs.CommandBuffer, baseBinding, (uint)count, _buffers.Pointer, _offsets.Pointer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ArrayPool<Auto<DisposableBuffer>>.Shared.Return(autos, clearArray: true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user