diff options
| author | 2014-12-16 01:12:29 +0100 | |
|---|---|---|
| committer | 2014-12-20 18:06:55 +0100 | |
| commit | cc5746abfe838fa130dd8be58219e00ae292a8fe (patch) | |
| tree | 29465a8faee5064ae497ea3eea1fe5ff22843b2f /src | |
| parent | Pica/VertexShader: Remove (now) duplicated shader bytecode definitions in fav... (diff) | |
| download | yuzu-cc5746abfe838fa130dd8be58219e00ae292a8fe.tar.gz yuzu-cc5746abfe838fa130dd8be58219e00ae292a8fe.tar.xz yuzu-cc5746abfe838fa130dd8be58219e00ae292a8fe.zip | |
Pica/DebugUtils: Replace duplicated SHBIN structures in favor of nihstro's ones.
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/debug_utils/debug_utils.cpp | 69 |
1 files changed, 8 insertions, 61 deletions
diff --git a/src/video_core/debug_utils/debug_utils.cpp b/src/video_core/debug_utils/debug_utils.cpp index 1a7b851d5..7e1cfb92c 100644 --- a/src/video_core/debug_utils/debug_utils.cpp +++ b/src/video_core/debug_utils/debug_utils.cpp | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #include <png.h> | 14 | #include <png.h> |
| 15 | #endif | 15 | #endif |
| 16 | 16 | ||
| 17 | #include <nihstro/shader_binary.h> | ||
| 18 | |||
| 17 | #include "common/log.h" | 19 | #include "common/log.h" |
| 18 | #include "common/file_util.h" | 20 | #include "common/file_util.h" |
| 19 | 21 | ||
| @@ -22,6 +24,10 @@ | |||
| 22 | 24 | ||
| 23 | #include "debug_utils.h" | 25 | #include "debug_utils.h" |
| 24 | 26 | ||
| 27 | using nihstro::DVLBHeader; | ||
| 28 | using nihstro::DVLEHeader; | ||
| 29 | using nihstro::DVLPHeader; | ||
| 30 | |||
| 25 | namespace Pica { | 31 | namespace Pica { |
| 26 | 32 | ||
| 27 | void DebugContext::OnEvent(Event event, void* data) { | 33 | void DebugContext::OnEvent(Event event, void* data) { |
| @@ -98,65 +104,6 @@ void GeometryDumper::Dump() { | |||
| 98 | } | 104 | } |
| 99 | } | 105 | } |
| 100 | 106 | ||
| 101 | #pragma pack(1) | ||
| 102 | struct DVLBHeader { | ||
| 103 | enum : u32 { | ||
| 104 | MAGIC_WORD = 0x424C5644, // "DVLB" | ||
| 105 | }; | ||
| 106 | |||
| 107 | u32 magic_word; | ||
| 108 | u32 num_programs; | ||
| 109 | // u32 dvle_offset_table[]; | ||
| 110 | }; | ||
| 111 | static_assert(sizeof(DVLBHeader) == 0x8, "Incorrect structure size"); | ||
| 112 | |||
| 113 | struct DVLPHeader { | ||
| 114 | enum : u32 { | ||
| 115 | MAGIC_WORD = 0x504C5644, // "DVLP" | ||
| 116 | }; | ||
| 117 | |||
| 118 | u32 magic_word; | ||
| 119 | u32 version; | ||
| 120 | u32 binary_offset; // relative to DVLP start | ||
| 121 | u32 binary_size_words; | ||
| 122 | u32 swizzle_patterns_offset; | ||
| 123 | u32 swizzle_patterns_num_entries; | ||
| 124 | u32 unk2; | ||
| 125 | }; | ||
| 126 | static_assert(sizeof(DVLPHeader) == 0x1C, "Incorrect structure size"); | ||
| 127 | |||
| 128 | struct DVLEHeader { | ||
| 129 | enum : u32 { | ||
| 130 | MAGIC_WORD = 0x454c5644, // "DVLE" | ||
| 131 | }; | ||
| 132 | |||
| 133 | enum class ShaderType : u8 { | ||
| 134 | VERTEX = 0, | ||
| 135 | GEOMETRY = 1, | ||
| 136 | }; | ||
| 137 | |||
| 138 | u32 magic_word; | ||
| 139 | u16 pad1; | ||
| 140 | ShaderType type; | ||
| 141 | u8 pad2; | ||
| 142 | u32 main_offset_words; // offset within binary blob | ||
| 143 | u32 endmain_offset_words; | ||
| 144 | u32 pad3; | ||
| 145 | u32 pad4; | ||
| 146 | u32 constant_table_offset; | ||
| 147 | u32 constant_table_size; // number of entries | ||
| 148 | u32 label_table_offset; | ||
| 149 | u32 label_table_size; | ||
| 150 | u32 output_register_table_offset; | ||
| 151 | u32 output_register_table_size; | ||
| 152 | u32 uniform_table_offset; | ||
| 153 | u32 uniform_table_size; | ||
| 154 | u32 symbol_table_offset; | ||
| 155 | u32 symbol_table_size; | ||
| 156 | |||
| 157 | }; | ||
| 158 | static_assert(sizeof(DVLEHeader) == 0x40, "Incorrect structure size"); | ||
| 159 | #pragma pack() | ||
| 160 | 107 | ||
| 161 | void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data, u32 swizzle_size, | 108 | void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data, u32 swizzle_size, |
| 162 | u32 main_offset, const Regs::VSOutputAttributes* output_attributes) | 109 | u32 main_offset, const Regs::VSOutputAttributes* output_attributes) |
| @@ -276,8 +223,8 @@ void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data | |||
| 276 | dvlp.binary_size_words = binary_size; | 223 | dvlp.binary_size_words = binary_size; |
| 277 | QueueForWriting((u8*)binary_data, binary_size * sizeof(u32)); | 224 | QueueForWriting((u8*)binary_data, binary_size * sizeof(u32)); |
| 278 | 225 | ||
| 279 | dvlp.swizzle_patterns_offset = write_offset - dvlp_offset; | 226 | dvlp.swizzle_info_offset = write_offset - dvlp_offset; |
| 280 | dvlp.swizzle_patterns_num_entries = swizzle_size; | 227 | dvlp.swizzle_info_num_entries = swizzle_size; |
| 281 | u32 dummy = 0; | 228 | u32 dummy = 0; |
| 282 | for (unsigned int i = 0; i < swizzle_size; ++i) { | 229 | for (unsigned int i = 0; i < swizzle_size; ++i) { |
| 283 | QueueForWriting((u8*)&swizzle_data[i], sizeof(swizzle_data[i])); | 230 | QueueForWriting((u8*)&swizzle_data[i], sizeof(swizzle_data[i])); |