diff options
| author | Tillmann Karras <tilkax@gmail.com> | 2015-01-31 09:23:50 +0100 |
|---|---|---|
| committer | Tillmann Karras <tilkax@gmail.com> | 2015-01-31 09:23:50 +0100 |
| commit | 1aac65f9880787ef8a68131429f4f71cacbee838 (patch) | |
| tree | 5f0a070ead9c5897cedbd16f80802a0998802fdc /Source/Core/VideoCommon | |
| parent | d50b330d578fd4dffea6c150981a447bc34428bb (diff) | |
VertexLoaderManager: assimilate GetVertexSize()
Diffstat (limited to 'Source/Core/VideoCommon')
| -rw-r--r-- | Source/Core/VideoCommon/OpcodeDecoding.cpp | 32 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/VertexLoaderManager.cpp | 11 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/VertexLoaderManager.h | 4 |
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); |
