Explorar o código

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.
Lioncash %!s(int64=10) %!d(string=hai) anos
pai
achega
5587383eb7
Modificáronse 2 ficheiros con 7 adicións e 0 borrados
  1. 6 0
      src/video_core/vertex_loader.cpp
  2. 1 0
      src/video_core/vertex_loader.h

+ 6 - 0
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

+ 1 - 0
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