diff options
| author | bunnei <bunneidev@gmail.com> | 2016-04-29 09:42:47 -0400 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2016-04-29 09:42:47 -0400 |
| commit | 90243c56fb90d7d74cbef40da3eec97d967c10a2 (patch) | |
| tree | 94d223001196ca9b774a8d018535ba2be8de1b01 /src/video_core/vertex_loader.h | |
| parent | e3a8292495cf0fb4297be27c696649dc44e011f0 (diff) | |
| parent | a86d7cacc1f56c6e8ff5f046ba7e2477e92d873f (diff) | |
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 @@ +#pragma once + +#include <iterator> +#include <algorithm> + +#include "video_core/pica.h" +#include "video_core/shader/shader.h" +#include "video_core/debug_utils/debug_utils.h" + +namespace Pica { + +class VertexLoader { +public: + void Setup(const Pica::Regs& regs); + void LoadVertex(u32 base_address, int index, int vertex, Shader::InputVertex& input, DebugUtils::MemoryAccessTracker& memory_accesses); + + int GetNumTotalAttributes() const { return num_total_attributes; } + +private: + u32 vertex_attribute_sources[16]; + u32 vertex_attribute_strides[16] = {}; + Regs::VertexAttributeFormat vertex_attribute_formats[16] = {}; + u32 vertex_attribute_elements[16] = {}; + bool vertex_attribute_is_default[16]; + int num_total_attributes; +}; + +} // namespace Pica |
