From 5587383eb72b02af79526d6fe5e662b281b4b32b Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Fri, 29 Apr 2016 11:27:15 -0400
Subject: [PATCH] vertex_loader: Provide an assertion for ensuring the loader
 has been setup

Also adds an assert to ensure that Setup is not called more than once
during a VertexLoader's lifetime.
---
 src/video_core/vertex_loader.cpp | 6 ++++++
 src/video_core/vertex_loader.h   | 1 +
 2 files changed, 7 insertions(+)

diff --git a/src/video_core/vertex_loader.cpp b/src/video_core/vertex_loader.cpp
index ce1c8da59e..18a7cf1444 100644
--- a/src/video_core/vertex_loader.cpp
+++ b/src/video_core/vertex_loader.cpp
@@ -21,6 +21,8 @@
 namespace Pica {
 
 void VertexLoader::Setup(const Pica::Regs& regs) {
+    ASSERT_MSG(!is_setup, "VertexLoader is not intended to be setup more than once.");
+
     const auto& attribute_config = regs.vertex_attributes;
     num_total_attributes = attribute_config.GetNumTotalAttributes();
 
@@ -60,9 +62,13 @@ void VertexLoader::Setup(const Pica::Regs& regs) {
             }
         }
     }
+
+    is_setup = true;
 }
 
 void VertexLoader::LoadVertex(u32 base_address, int index, int vertex, Shader::InputVertex& input, DebugUtils::MemoryAccessTracker& memory_accesses) {
+    ASSERT_MSG(is_setup, "A VertexLoader needs to be setup before loading vertices.");
+
     for (int i = 0; i < num_total_attributes; ++i) {
         if (vertex_attribute_elements[i] != 0) {
             // Load per-vertex data from the loader arrays
diff --git a/src/video_core/vertex_loader.h b/src/video_core/vertex_loader.h
index 2a97b97c83..7192120a57 100644
--- a/src/video_core/vertex_loader.h
+++ b/src/video_core/vertex_loader.h
@@ -34,6 +34,7 @@ private:
     std::array<u32, 16> vertex_attribute_elements{};
     std::array<bool, 16> vertex_attribute_is_default;
     int num_total_attributes = 0;
+    bool is_setup = false;
 };
 
 }  // namespace Pica