From 1aac65f9880787ef8a68131429f4f71cacbee838 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sat, 31 Jan 2015 09:23:50 +0100 Subject: [PATCH] VertexLoaderManager: assimilate GetVertexSize() --- Source/Core/VideoCommon/OpcodeDecoding.cpp | 30 +++++++------------ .../Core/VideoCommon/VertexLoaderManager.cpp | 11 ++----- Source/Core/VideoCommon/VertexLoaderManager.h | 4 +-- 3 files changed, 14 insertions(+), 31 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(); + 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 (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; - 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);