diff options
Diffstat (limited to 'src/video_core/debug_utils/debug_utils.h')
-rw-r--r-- | src/video_core/debug_utils/debug_utils.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/video_core/debug_utils/debug_utils.h b/src/video_core/debug_utils/debug_utils.h new file mode 100644 index 000000000..8b1499bf2 --- /dev/null +++ b/src/video_core/debug_utils/debug_utils.h @@ -0,0 +1,66 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#pragma once + +#include <array> +#include <memory> +#include <vector> + +#include "video_core/pica.h" + +namespace Pica { + +namespace DebugUtils { + +// Simple utility class for dumping geometry data to an OBJ file +class GeometryDumper { +public: + struct Vertex { + std::array<float,3> pos; + }; + + void AddTriangle(Vertex& v0, Vertex& v1, Vertex& v2); + + void Dump(); + +private: + struct Face { + int index[3]; + }; + + std::vector<Vertex> vertices; + std::vector<Face> faces; +}; + +void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data, u32 swizzle_size, + u32 main_offset, const Regs::VSOutputAttributes* output_attributes); + + +// Utility class to log Pica commands. +struct PicaTrace { + struct Write : public std::pair<u32,u32> { + Write(u32 id, u32 value) : std::pair<u32,u32>(id, value) {} + + u32& Id() { return first; } + const u32& Id() const { return first; } + + u32& Value() { return second; } + const u32& Value() const { return second; } + }; + std::vector<Write> writes; +}; + +void StartPicaTracing(); +bool IsPicaTracing(); +void OnPicaRegWrite(u32 id, u32 value); +std::unique_ptr<PicaTrace> FinishPicaTracing(); + +void DumpTexture(const Pica::Regs::TextureConfig& texture_config, u8* data); + +void DumpTevStageConfig(const std::array<Pica::Regs::TevStageConfig,6>& stages); + +} // namespace + +} // namespace |