VertexLoader: Use Common::SmallVector
This commit is contained in:
parent
4116344785
commit
69cf8b3470
|
@ -77,9 +77,6 @@ VertexLoader::VertexLoader(const TVtxDesc& vtx_desc, const VAT& vtx_attr)
|
||||||
|
|
||||||
void VertexLoader::CompileVertexTranslator()
|
void VertexLoader::CompileVertexTranslator()
|
||||||
{
|
{
|
||||||
// Reset pipeline
|
|
||||||
m_numPipelineStages = 0;
|
|
||||||
|
|
||||||
// Position in pc vertex format.
|
// Position in pc vertex format.
|
||||||
int nat_offset = 0;
|
int nat_offset = 0;
|
||||||
|
|
||||||
|
@ -253,7 +250,7 @@ void VertexLoader::CompileVertexTranslator()
|
||||||
|
|
||||||
void VertexLoader::WriteCall(TPipelineFunction func)
|
void VertexLoader::WriteCall(TPipelineFunction func)
|
||||||
{
|
{
|
||||||
m_PipelineStages[m_numPipelineStages++] = func;
|
m_PipelineStages.push_back(func);
|
||||||
}
|
}
|
||||||
|
|
||||||
int VertexLoader::RunVertices(const u8* src, u8* dst, int count)
|
int VertexLoader::RunVertices(const u8* src, u8* dst, int count)
|
||||||
|
@ -269,8 +266,8 @@ int VertexLoader::RunVertices(const u8* src, u8* dst, int count)
|
||||||
m_tcIndex = 0;
|
m_tcIndex = 0;
|
||||||
m_colIndex = 0;
|
m_colIndex = 0;
|
||||||
m_texmtxwrite = m_texmtxread = 0;
|
m_texmtxwrite = m_texmtxread = 0;
|
||||||
for (int i = 0; i < m_numPipelineStages; i++)
|
for (TPipelineFunction& func : m_PipelineStages)
|
||||||
m_PipelineStages[i](this);
|
func(this);
|
||||||
PRIM_LOG("\n");
|
PRIM_LOG("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
|
#include "Common/SmallVector.h"
|
||||||
#include "VideoCommon/VertexLoaderBase.h"
|
#include "VideoCommon/VertexLoaderBase.h"
|
||||||
|
|
||||||
class VertexLoader;
|
class VertexLoader;
|
||||||
|
@ -38,8 +39,11 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Pipeline.
|
// Pipeline.
|
||||||
TPipelineFunction m_PipelineStages[64]; // TODO - figure out real max. it's lower.
|
// 1 pos matrix + 8 texture matrices + 1 position + 1 normal or normal/binormal/tangent
|
||||||
int m_numPipelineStages;
|
// + 2 colors + 8 texture coordinates or dummy texture coordinates + 8 texture matrices
|
||||||
|
// merged into texture coordinates + 1 skip gives a maximum of 30
|
||||||
|
// (Tested by VertexLoaderTest.LargeFloatVertexSpeed)
|
||||||
|
Common::SmallVector<TPipelineFunction, 30> m_PipelineStages;
|
||||||
|
|
||||||
void CompileVertexTranslator();
|
void CompileVertexTranslator();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue