diff --git a/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp b/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp index 9b6a2f2d3f..e4ad9e3e22 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12Buffer.cpp @@ -348,7 +348,7 @@ std::pair, D3D12_INDEX_BUFFER_VIEW> D3D12G indexCount = 6 * m_indexed_array.m_data.size() / (4 * indexSize); else indexCount = m_draw_array_count * 6 / 4; - size_t subBufferSize = indexCount * indexSize; + size_t subBufferSize = powerOf2Align(indexCount * indexSize, 64); // 65536 alignment size_t bufferHeapOffset = getCurrentResourceStorage().m_vertexIndexBuffersHeapFreeSpace; bufferHeapOffset = (bufferHeapOffset + 65536 - 1) & ~65535; @@ -366,7 +366,7 @@ std::pair, D3D12_INDEX_BUFFER_VIEW> D3D12G void *bufferMap; check(indexBuffer->Map(0, nullptr, (void**)&bufferMap)); if (indexed_draw && !m_forcedIndexBuffer) - memcpy(bufferMap, m_indexed_array.m_data.data(), subBufferSize); + streamBuffer(bufferMap, m_indexed_array.m_data.data(), subBufferSize); else if (indexed_draw && m_forcedIndexBuffer) { switch (m_indexed_array.m_type) diff --git a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp index 40c11e0072..d812a05350 100644 --- a/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp +++ b/rpcs3/Emu/RSX/D3D12/D3D12GSRender.cpp @@ -41,7 +41,7 @@ void D3D12GSRender::ResourceStorage::Init(ID3D12Device *device) // Create heap for vertex and constants buffers D3D12_HEAP_DESC vertexBufferHeapDesc = {}; // 16 MB wide - vertexBufferHeapDesc.SizeInBytes = 1024 * 1024 * 16; + vertexBufferHeapDesc.SizeInBytes = 1024 * 1024 * 128; vertexBufferHeapDesc.Flags = D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS; vertexBufferHeapDesc.Properties.Type = D3D12_HEAP_TYPE_UPLOAD; check(device->CreateHeap(&vertexBufferHeapDesc, IID_PPV_ARGS(&m_vertexIndexBuffersHeap)));