diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2023-03-30 11:05:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-30 11:05:02 +0200 |
| commit | 50a45bd6146796c201447a84cbf92f2e398043a1 (patch) | |
| tree | f79e548f93243f04eec6f39925893bc06bfdf733 /Source/Core/VideoCommon/VertexShaderManager.cpp | |
| parent | 806ea59d77809aa7c6c17a4b61ae304b0f19e284 (diff) | |
| parent | 93fce0e4b6cfdc67fca441bb7e2c9029bd4afe15 (diff) | |
Merge pull request #11673 from K0bin/vertex-loader-micro-opt
Vertex Loader Microoptimization
Diffstat (limited to 'Source/Core/VideoCommon/VertexShaderManager.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VertexShaderManager.cpp | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/Source/Core/VideoCommon/VertexShaderManager.cpp b/Source/Core/VideoCommon/VertexShaderManager.cpp index 2408281da6..276b400ab3 100644 --- a/Source/Core/VideoCommon/VertexShaderManager.cpp +++ b/Source/Core/VideoCommon/VertexShaderManager.cpp @@ -621,44 +621,6 @@ void VertexShaderManager::SetMaterialColorChanged(int index) m_materials_changed[index] = true; } -static void UpdateValue(bool* dirty, u32* old_value, u32 new_value) -{ - if (*old_value == new_value) - return; - *old_value = new_value; - *dirty = true; -} - -static void UpdateOffset(bool* dirty, bool include_components, u32* old_value, - const AttributeFormat& attribute) -{ - if (!attribute.enable) - return; - u32 new_value = attribute.offset / 4; // GPU uses uint offsets - if (include_components) - new_value |= attribute.components << 16; - UpdateValue(dirty, old_value, new_value); -} - -template <size_t N> -static void UpdateOffsets(bool* dirty, bool include_components, std::array<u32, N>* old_value, - const std::array<AttributeFormat, N>& attribute) -{ - for (size_t i = 0; i < N; i++) - UpdateOffset(dirty, include_components, &(*old_value)[i], attribute[i]); -} - -void VertexShaderManager::SetVertexFormat(u32 components, const PortableVertexDeclaration& format) -{ - UpdateValue(&dirty, &constants.components, components); - UpdateValue(&dirty, &constants.vertex_stride, format.stride / 4); - UpdateOffset(&dirty, true, &constants.vertex_offset_position, format.position); - UpdateOffset(&dirty, false, &constants.vertex_offset_posmtx, format.posmtx); - UpdateOffsets(&dirty, true, &constants.vertex_offset_texcoords, format.texcoords); - UpdateOffsets(&dirty, false, &constants.vertex_offset_colors, format.colors); - UpdateOffsets(&dirty, false, &constants.vertex_offset_normals, format.normals); -} - void VertexShaderManager::SetTexMatrixInfoChanged(int index) { // TODO: Should we track this with more precision, like which indices changed? |
