summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexLoader_Position.cpp
diff options
context:
space:
mode:
authorMarkus Wick <markus+github@selfnet.de>2015-01-20 09:40:46 +0100
committerMarkus Wick <markus+github@selfnet.de>2015-01-20 09:40:46 +0100
commit8ff1dc9c8787935a5115ee771cf351f8691db104 (patch)
tree55b2771ca221951c07f51f3bb126e22db9c86aa7 /Source/Core/VideoCommon/VertexLoader_Position.cpp
parent6f61f90dab4c82afb38b8e3c27e4740671250841 (diff)
parent1dcf49237b81b850d5683887e3608fbab8c54b27 (diff)
Merge pull request #1925 from Tilka/vertex_loader_jit
VertexLoaderX64: fix alpha of indirect 8888 colors
Diffstat (limited to 'Source/Core/VideoCommon/VertexLoader_Position.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexLoader_Position.cpp70
1 files changed, 2 insertions, 68 deletions
diff --git a/Source/Core/VideoCommon/VertexLoader_Position.cpp b/Source/Core/VideoCommon/VertexLoader_Position.cpp
index 43e56119ea..3dac5a55b1 100644
--- a/Source/Core/VideoCommon/VertexLoader_Position.cpp
+++ b/Source/Core/VideoCommon/VertexLoader_Position.cpp
@@ -5,8 +5,6 @@
#include <type_traits>
#include "Common/CommonTypes.h"
-#include "Common/CPUDetect.h"
-
#include "VideoCommon/VertexLoader.h"
#include "VideoCommon/VertexLoader_Position.h"
#include "VideoCommon/VertexManagerBase.h"
@@ -28,7 +26,7 @@ template <typename T, int N>
void LOADERDECL Pos_ReadDirect(VertexLoader* loader)
{
static_assert(N <= 3, "N > 3 is not sane!");
- auto const scale = loader->m_posScale[0];;
+ auto const scale = loader->m_posScale;
DataReader dst(g_vertex_manager_write_ptr, nullptr);
DataReader src(g_video_buffer_read_ptr, nullptr);
@@ -49,7 +47,7 @@ void LOADERDECL Pos_ReadIndex(VertexLoader* loader)
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];
+ auto const scale = loader->m_posScale;
DataReader dst(g_vertex_manager_write_ptr, nullptr);
for (int i = 0; i < 3; ++i)
@@ -59,28 +57,6 @@ void LOADERDECL Pos_ReadIndex(VertexLoader* loader)
LOG_VTX();
}
-#if _M_SSE >= 0x301
-template <typename T, bool three>
-void LOADERDECL Pos_ReadDirect_SSSE3(VertexLoader* loader)
-{
- const T* pData = reinterpret_cast<const T*>(DataGetPosition());
- Vertex_Read_SSSE3<T, three, true>(pData, *(__m128*)loader->m_posScale);
- DataSkip<(2 + three) * sizeof(T)>();
- LOG_VTX();
-}
-
-template <typename I, typename T, bool three>
-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();
-}
-#endif
-
static TPipelineFunction tableReadPosition[4][8][2] = {
{
{nullptr, nullptr,},
@@ -127,48 +103,6 @@ static int tableReadPositionVertexSize[4][8][2] = {
},
};
-
-void VertexLoader_Position::Init()
-{
-
-#if _M_SSE >= 0x301
- if (cpu_info.bSSSE3)
- {
- tableReadPosition[1][0][0] = Pos_ReadDirect_SSSE3<u8, false>;
- tableReadPosition[1][0][1] = Pos_ReadDirect_SSSE3<u8, true>;
- tableReadPosition[1][1][0] = Pos_ReadDirect_SSSE3<s8, false>;
- tableReadPosition[1][1][1] = Pos_ReadDirect_SSSE3<s8, true>;
- tableReadPosition[1][2][0] = Pos_ReadDirect_SSSE3<u16, false>;
- tableReadPosition[1][2][1] = Pos_ReadDirect_SSSE3<u16, true>;
- tableReadPosition[1][3][0] = Pos_ReadDirect_SSSE3<s16, false>;
- tableReadPosition[1][3][1] = Pos_ReadDirect_SSSE3<s16, true>;
- tableReadPosition[1][4][0] = Pos_ReadDirect_SSSE3<float, false>;
- tableReadPosition[1][4][1] = Pos_ReadDirect_SSSE3<float, true>;
- tableReadPosition[2][0][0] = Pos_ReadIndex_SSSE3<u8, u8, false>;
- tableReadPosition[2][0][1] = Pos_ReadIndex_SSSE3<u8, u8, true>;
- tableReadPosition[3][0][0] = Pos_ReadIndex_SSSE3<u16, u8, false>;
- tableReadPosition[3][0][1] = Pos_ReadIndex_SSSE3<u16, u8, true>;
- tableReadPosition[2][1][0] = Pos_ReadIndex_SSSE3<u8, s8, false>;
- tableReadPosition[2][1][1] = Pos_ReadIndex_SSSE3<u8, s8, true>;
- tableReadPosition[3][1][0] = Pos_ReadIndex_SSSE3<u16, s8, false>;
- tableReadPosition[3][1][1] = Pos_ReadIndex_SSSE3<u16, s8, true>;
- tableReadPosition[2][2][0] = Pos_ReadIndex_SSSE3<u8, u16, false>;
- tableReadPosition[2][2][1] = Pos_ReadIndex_SSSE3<u8, u16, true>;
- tableReadPosition[3][2][0] = Pos_ReadIndex_SSSE3<u16, u16, false>;
- tableReadPosition[3][2][1] = Pos_ReadIndex_SSSE3<u16, u16, true>;
- tableReadPosition[2][3][0] = Pos_ReadIndex_SSSE3<u8, s16, false>;
- tableReadPosition[2][3][1] = Pos_ReadIndex_SSSE3<u8, s16, true>;
- tableReadPosition[3][3][0] = Pos_ReadIndex_SSSE3<u16, s16, false>;
- tableReadPosition[3][3][1] = Pos_ReadIndex_SSSE3<u16, s16, true>;
- tableReadPosition[2][4][0] = Pos_ReadIndex_SSSE3<u8, float, false>;
- tableReadPosition[2][4][1] = Pos_ReadIndex_SSSE3<u8, float, true>;
- tableReadPosition[3][4][0] = Pos_ReadIndex_SSSE3<u16, float, false>;
- tableReadPosition[3][4][1] = Pos_ReadIndex_SSSE3<u16, float, true>;
- }
-#endif
-
-}
-
unsigned int VertexLoader_Position::GetSize(u64 _type, unsigned int _format, unsigned int _elements)
{
return tableReadPositionVertexSize[_type][_format][_elements];