mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-08-08 09:09:46 +00:00
d3d12: Use streaming buffer for index buffer
This commit is contained in:
parent
90e0a89e9b
commit
2709a3e49a
2 changed files with 3 additions and 3 deletions
|
@ -348,7 +348,7 @@ std::pair<std::vector<D3D12_VERTEX_BUFFER_VIEW>, D3D12_INDEX_BUFFER_VIEW> D3D12G
|
||||||
indexCount = 6 * m_indexed_array.m_data.size() / (4 * indexSize);
|
indexCount = 6 * m_indexed_array.m_data.size() / (4 * indexSize);
|
||||||
else
|
else
|
||||||
indexCount = m_draw_array_count * 6 / 4;
|
indexCount = m_draw_array_count * 6 / 4;
|
||||||
size_t subBufferSize = indexCount * indexSize;
|
size_t subBufferSize = powerOf2Align(indexCount * indexSize, 64);
|
||||||
// 65536 alignment
|
// 65536 alignment
|
||||||
size_t bufferHeapOffset = getCurrentResourceStorage().m_vertexIndexBuffersHeapFreeSpace;
|
size_t bufferHeapOffset = getCurrentResourceStorage().m_vertexIndexBuffersHeapFreeSpace;
|
||||||
bufferHeapOffset = (bufferHeapOffset + 65536 - 1) & ~65535;
|
bufferHeapOffset = (bufferHeapOffset + 65536 - 1) & ~65535;
|
||||||
|
@ -366,7 +366,7 @@ std::pair<std::vector<D3D12_VERTEX_BUFFER_VIEW>, D3D12_INDEX_BUFFER_VIEW> D3D12G
|
||||||
void *bufferMap;
|
void *bufferMap;
|
||||||
check(indexBuffer->Map(0, nullptr, (void**)&bufferMap));
|
check(indexBuffer->Map(0, nullptr, (void**)&bufferMap));
|
||||||
if (indexed_draw && !m_forcedIndexBuffer)
|
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)
|
else if (indexed_draw && m_forcedIndexBuffer)
|
||||||
{
|
{
|
||||||
switch (m_indexed_array.m_type)
|
switch (m_indexed_array.m_type)
|
||||||
|
|
|
@ -41,7 +41,7 @@ void D3D12GSRender::ResourceStorage::Init(ID3D12Device *device)
|
||||||
// Create heap for vertex and constants buffers
|
// Create heap for vertex and constants buffers
|
||||||
D3D12_HEAP_DESC vertexBufferHeapDesc = {};
|
D3D12_HEAP_DESC vertexBufferHeapDesc = {};
|
||||||
// 16 MB wide
|
// 16 MB wide
|
||||||
vertexBufferHeapDesc.SizeInBytes = 1024 * 1024 * 16;
|
vertexBufferHeapDesc.SizeInBytes = 1024 * 1024 * 128;
|
||||||
vertexBufferHeapDesc.Flags = D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS;
|
vertexBufferHeapDesc.Flags = D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS;
|
||||||
vertexBufferHeapDesc.Properties.Type = D3D12_HEAP_TYPE_UPLOAD;
|
vertexBufferHeapDesc.Properties.Type = D3D12_HEAP_TYPE_UPLOAD;
|
||||||
check(device->CreateHeap(&vertexBufferHeapDesc, IID_PPV_ARGS(&m_vertexIndexBuffersHeap)));
|
check(device->CreateHeap(&vertexBufferHeapDesc, IID_PPV_ARGS(&m_vertexIndexBuffersHeap)));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue