diff options
| author | 2016-04-29 09:42:47 -0400 | |
|---|---|---|
| committer | 2016-04-29 09:42:47 -0400 | |
| commit | 90243c56fb90d7d74cbef40da3eec97d967c10a2 (patch) | |
| tree | 94d223001196ca9b774a8d018535ba2be8de1b01 /src/video_core/vertex_loader.h | |
| parent | Common: Remove section measurement from profiler (#1731) (diff) | |
| parent | Move and rename the MemoryAccesses class to MemoryAccessTracker. (diff) | |
| download | yuzu-90243c56fb90d7d74cbef40da3eec97d967c10a2.tar.gz yuzu-90243c56fb90d7d74cbef40da3eec97d967c10a2.tar.xz yuzu-90243c56fb90d7d74cbef40da3eec97d967c10a2.zip | |
Merge pull request #1730 from hrydgard/vertex-loader
* Remove late accesses to attribute_config
* Refactor: Extract VertexLoader from command_processor.cpp.
Preparation for a similar concept to Dolphin or PPSSPP. These can be JIT-ed and cached.
* Move "&" to their proper place, add missing includes and make some properly relative.
* Don't keep base_address in the loader, it doesn't belong there (with it, the loader can't be cached).
* Optimize the vertex loader, nearly doubling its speed.
* Debugger fix
* Move and rename the MemoryAccesses class to MemoryAccessTracker.
Diffstat (limited to 'src/video_core/vertex_loader.h')
| -rw-r--r-- | src/video_core/vertex_loader.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/video_core/vertex_loader.h b/src/video_core/vertex_loader.h new file mode 100644 index 000000000..ff42d1596 --- /dev/null +++ b/src/video_core/vertex_loader.h | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include <iterator> | ||
| 4 | #include <algorithm> | ||
| 5 | |||
| 6 | #include "video_core/pica.h" | ||
| 7 | #include "video_core/shader/shader.h" | ||
| 8 | #include "video_core/debug_utils/debug_utils.h" | ||
| 9 | |||
| 10 | namespace Pica { | ||
| 11 | |||
| 12 | class VertexLoader { | ||
| 13 | public: | ||
| 14 | void Setup(const Pica::Regs& regs); | ||
| 15 | void LoadVertex(u32 base_address, int index, int vertex, Shader::InputVertex& input, DebugUtils::MemoryAccessTracker& memory_accesses); | ||
| 16 | |||
| 17 | int GetNumTotalAttributes() const { return num_total_attributes; } | ||
| 18 | |||
| 19 | private: | ||
| 20 | u32 vertex_attribute_sources[16]; | ||
| 21 | u32 vertex_attribute_strides[16] = {}; | ||
| 22 | Regs::VertexAttributeFormat vertex_attribute_formats[16] = {}; | ||
| 23 | u32 vertex_attribute_elements[16] = {}; | ||
| 24 | bool vertex_attribute_is_default[16]; | ||
| 25 | int num_total_attributes; | ||
| 26 | }; | ||
| 27 | |||
| 28 | } // namespace Pica | ||