diff options
| author | degasus <wickmarkus@web.de> | 2014-12-21 14:29:44 +0100 |
|---|---|---|
| committer | degasus <wickmarkus@web.de> | 2014-12-21 14:29:44 +0100 |
| commit | 1efd00227d3c38458d44193c4aa554f70a3b9c55 (patch) | |
| tree | e27485cb4278112551585b5ff0c822f125fa449b /Source/Core/VideoCommon/VertexLoader_Position.cpp | |
| parent | 325e8e370eddb236e29fd851a848f16ce7cdfd3d (diff) | |
VertexLoader: Skip vertices with position index = -1
Diffstat (limited to 'Source/Core/VideoCommon/VertexLoader_Position.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VertexLoader_Position.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/VertexLoader_Position.cpp b/Source/Core/VideoCommon/VertexLoader_Position.cpp index c0fac7ef93..419c041b5b 100644 --- a/Source/Core/VideoCommon/VertexLoader_Position.cpp +++ b/Source/Core/VideoCommon/VertexLoader_Position.cpp @@ -93,6 +93,7 @@ void LOADERDECL Pos_ReadIndex(VertexLoader* loader) static_assert(N <= 3, "N > 3 is not sane!"); auto const index = DataRead<I>(); + loader->m_vertexSkip = index == std::numeric_limits<I>::max(); auto const data = reinterpret_cast<const T*>(cached_arraybases[ARRAY_POSITION] + (index * g_main_cp_state.array_strides[ARRAY_POSITION])); auto const scale = loader->m_posScale[0]; DataReader dst(g_vertex_manager_write_ptr, nullptr); @@ -119,6 +120,7 @@ void LOADERDECL Pos_ReadIndex_SSSE3(VertexLoader* loader) { static_assert(std::is_unsigned<I>::value, "Only unsigned I is sane!"); auto const index = DataRead<I>(); + loader->m_vertexSkip = index == std::numeric_limits<I>::max(); const T* pData = (const T*)(cached_arraybases[ARRAY_POSITION] + (index * g_main_cp_state.array_strides[ARRAY_POSITION])); Vertex_Read_SSSE3<T, three, true>(pData, *(__m128*)loader->m_posScale); LOG_VTX(); |
