summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
authorTillmann Karras <tilkax@gmail.com>2015-01-31 09:23:50 +0100
committerTillmann Karras <tilkax@gmail.com>2015-01-31 09:23:50 +0100
commit1aac65f9880787ef8a68131429f4f71cacbee838 (patch)
tree5f0a070ead9c5897cedbd16f80802a0998802fdc /Source/Core/VideoCommon
parentd50b330d578fd4dffea6c150981a447bc34428bb (diff)
VertexLoaderManager: assimilate GetVertexSize()
Diffstat (limited to 'Source/Core/VideoCommon')
-rw-r--r--Source/Core/VideoCommon/OpcodeDecoding.cpp32
-rw-r--r--Source/Core/VideoCommon/VertexLoaderManager.cpp11
-rw-r--r--Source/Core/VideoCommon/VertexLoaderManager.h4
3 files changed, 15 insertions, 32 deletions
diff --git a/Source/Core/VideoCommon/OpcodeDecoding.cpp b/Source/Core/VideoCommon/OpcodeDecoding.cpp
index e347b93a76..4a23ac717b 100644
--- a/Source/Core/VideoCommon/OpcodeDecoding.cpp
+++ b/Source/Core/VideoCommon/OpcodeDecoding.cpp
@@ -265,28 +265,18 @@ u8* OpcodeDecoder_Run(DataReader src, u32* cycles, bool in_display_list)
if (src.size() < 2)
goto end;
u16 num_vertices = src.Read<u16>();
+ int bytes = VertexLoaderManager::RunVertices(
+ cmd_byte & GX_VAT_MASK, // Vertex loader index (0 - 7)
+ (cmd_byte & GX_PRIMITIVE_MASK) >> GX_PRIMITIVE_SHIFT,
+ num_vertices,
+ src,
+ g_bSkipCurrentFrame,
+ is_preprocess);
+
+ if (bytes < 0)
+ goto end;
- if (is_preprocess)
- {
- size_t size = num_vertices * VertexLoaderManager::GetVertexSize(cmd_byte & GX_VAT_MASK, is_preprocess);
- if (src.size() < size)
- goto end;
- src.Skip(size);
- }
- else
- {
- int bytes = VertexLoaderManager::RunVertices(
- cmd_byte & GX_VAT_MASK, // Vertex loader index (0 - 7)
- (cmd_byte & GX_PRIMITIVE_MASK) >> GX_PRIMITIVE_SHIFT,
- num_vertices,
- src,
- g_bSkipCurrentFrame);
-
- if (bytes < 0)
- goto end;
- else
- src.Skip(bytes);
- }
+ src.Skip(bytes);
// 4 GPU ticks per vertex, 3 CPU ticks per GPU tick
totalCycles += num_vertices * 4 * 3 + 6;
diff --git a/Source/Core/VideoCommon/VertexLoaderManager.cpp b/Source/Core/VideoCommon/VertexLoaderManager.cpp
index e0115a0d29..c15cadd267 100644
--- a/Source/Core/VideoCommon/VertexLoaderManager.cpp
+++ b/Source/Core/VideoCommon/VertexLoaderManager.cpp
@@ -138,18 +138,18 @@ static VertexLoaderBase* RefreshLoader(int vtx_attr_group, bool preprocess = fal
return loader;
}
-int RunVertices(int vtx_attr_group, int primitive, int count, DataReader src, bool skip_drawing)
+int RunVertices(int vtx_attr_group, int primitive, int count, DataReader src, bool skip_drawing, bool is_preprocess)
{
if (!count)
return 0;
- VertexLoaderBase* loader = RefreshLoader(vtx_attr_group);
+ VertexLoaderBase* loader = RefreshLoader(vtx_attr_group, is_preprocess);
int size = count * loader->m_VertexSize;
if ((int)src.size() < size)
return -1;
- if (skip_drawing)
+ if (skip_drawing || is_preprocess)
return size;
// If the native vertex format changed, force a flush.
@@ -175,11 +175,6 @@ int RunVertices(int vtx_attr_group, int primitive, int count, DataReader src, bo
return size;
}
-int GetVertexSize(int vtx_attr_group, bool preprocess)
-{
- return RefreshLoader(vtx_attr_group, preprocess)->m_VertexSize;
-}
-
NativeVertexFormat* GetCurrentVertexFormat()
{
return s_current_vtx_fmt;
diff --git a/Source/Core/VideoCommon/VertexLoaderManager.h b/Source/Core/VideoCommon/VertexLoaderManager.h
index e100480fd3..f89c094b96 100644
--- a/Source/Core/VideoCommon/VertexLoaderManager.h
+++ b/Source/Core/VideoCommon/VertexLoaderManager.h
@@ -17,10 +17,8 @@ namespace VertexLoaderManager
void MarkAllDirty();
- int GetVertexSize(int vtx_attr_group, bool preprocess);
-
// Returns -1 if buf_size is insufficient, else the amount of bytes consumed
- int RunVertices(int vtx_attr_group, int primitive, int count, DataReader src, bool skip_drawing = false);
+ int RunVertices(int vtx_attr_group, int primitive, int count, DataReader src, bool skip_drawing, bool is_preprocess);
// For debugging
void AppendListToString(std::string *dest);