From c64380a6881ccf48ba6542a3c6ef0ec5f9fd9702 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Fri, 2 Feb 2024 17:30:53 -0600 Subject: [PATCH] video backend changes for custom meshes --- Source/Core/VideoBackends/D3D/D3DVertexManager.cpp | 1 + Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp | 1 + Source/Core/VideoBackends/Metal/MTLVertexManager.mm | 1 + Source/Core/VideoBackends/OGL/OGLVertexManager.cpp | 1 + Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp | 1 + 5 files changed, 5 insertions(+) diff --git a/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp b/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp index 124e30a182..31c67d3dce 100644 --- a/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp +++ b/Source/Core/VideoBackends/D3D/D3DVertexManager.cpp @@ -213,6 +213,7 @@ void VertexManager::ResetBuffer(u32 vertex_stride) m_cur_buffer_pointer = m_base_buffer_pointer; m_end_buffer_pointer = m_base_buffer_pointer + m_cpu_vertex_buffer.size(); m_index_generator.Start(m_cpu_index_buffer.data()); + m_last_reset_pointer = m_cur_buffer_pointer; } void VertexManager::CommitBuffer(u32 num_vertices, u32 vertex_stride, u32 num_indices, diff --git a/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp b/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp index c0fe195e75..b09ea23833 100644 --- a/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp +++ b/Source/Core/VideoBackends/D3D12/D3D12VertexManager.cpp @@ -111,6 +111,7 @@ void VertexManager::ResetBuffer(u32 vertex_stride) m_end_buffer_pointer = m_vertex_stream_buffer.GetCurrentHostPointer() + MAXVBUFFERSIZE; m_cur_buffer_pointer = m_vertex_stream_buffer.GetCurrentHostPointer(); m_index_generator.Start(reinterpret_cast(m_index_stream_buffer.GetCurrentHostPointer())); + m_last_reset_pointer = m_cur_buffer_pointer; } void VertexManager::CommitBuffer(u32 num_vertices, u32 vertex_stride, u32 num_indices, diff --git a/Source/Core/VideoBackends/Metal/MTLVertexManager.mm b/Source/Core/VideoBackends/Metal/MTLVertexManager.mm index 91f1d42eec..66308c3614 100644 --- a/Source/Core/VideoBackends/Metal/MTLVertexManager.mm +++ b/Source/Core/VideoBackends/Metal/MTLVertexManager.mm @@ -67,6 +67,7 @@ void Metal::VertexManager::ResetBuffer(u32 vertex_stride) m_vertex_offset = m_base_vertex * vertex_stride - vertex.second; m_cur_buffer_pointer = m_base_buffer_pointer = static_cast(vertex.first) + m_vertex_offset; m_end_buffer_pointer = m_base_buffer_pointer + max_vertex_size; + m_last_reset_pointer = m_cur_buffer_pointer; m_index_generator.Start(static_cast(index.first)); } diff --git a/Source/Core/VideoBackends/OGL/OGLVertexManager.cpp b/Source/Core/VideoBackends/OGL/OGLVertexManager.cpp index 9c08b238da..13840bcd20 100644 --- a/Source/Core/VideoBackends/OGL/OGLVertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/OGLVertexManager.cpp @@ -166,6 +166,7 @@ void VertexManager::ResetBuffer(u32 vertex_stride) auto buffer = m_vertex_buffer->Map(MAXVBUFFERSIZE, vertex_stride); m_cur_buffer_pointer = m_base_buffer_pointer = buffer.first; m_end_buffer_pointer = buffer.first + MAXVBUFFERSIZE; + m_last_reset_pointer = m_cur_buffer_pointer; buffer = m_index_buffer->Map(MAXIBUFFERSIZE * sizeof(u16)); m_index_generator.Start(reinterpret_cast(buffer.first)); diff --git a/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp b/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp index e18a5ffd81..e151a5d380 100644 --- a/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp +++ b/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp @@ -171,6 +171,7 @@ void VertexManager::ResetBuffer(u32 vertex_stride) m_end_buffer_pointer = m_vertex_stream_buffer->GetCurrentHostPointer() + MAXVBUFFERSIZE; m_cur_buffer_pointer = m_vertex_stream_buffer->GetCurrentHostPointer(); m_index_generator.Start(reinterpret_cast(m_index_stream_buffer->GetCurrentHostPointer())); + m_last_reset_pointer = m_cur_buffer_pointer; } void VertexManager::CommitBuffer(u32 num_vertices, u32 vertex_stride, u32 num_indices,