summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexLoader_Position.cpp
diff options
context:
space:
mode:
authordegasus <wickmarkus@web.de>2014-12-21 14:29:44 +0100
committerdegasus <wickmarkus@web.de>2014-12-21 14:29:44 +0100
commit1efd00227d3c38458d44193c4aa554f70a3b9c55 (patch)
treee27485cb4278112551585b5ff0c822f125fa449b /Source/Core/VideoCommon/VertexLoader_Position.cpp
parent325e8e370eddb236e29fd851a848f16ce7cdfd3d (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.cpp2
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();