diff options
| author | 2015-05-27 16:20:46 +0200 | |
|---|---|---|
| committer | 2015-08-16 13:22:00 +0200 | |
| commit | 4cb302c8aeb86bdb7c7bd6f9e5d716e140868075 (patch) | |
| tree | 3aebbc2a55c68a48cbf72bcf7652485c1ac9b745 /src/video_core/debug_utils | |
| parent | citra-qt: Print the correct swizzle mask for SRC2 in the shader disassembler. (diff) | |
| download | yuzu-4cb302c8aeb86bdb7c7bd6f9e5d716e140868075.tar.gz yuzu-4cb302c8aeb86bdb7c7bd6f9e5d716e140868075.tar.xz yuzu-4cb302c8aeb86bdb7c7bd6f9e5d716e140868075.zip | |
citra-qt: Improve shader debugger.
Now supports dumping the current shader and recognizes a larger number of output semantics.
Diffstat (limited to 'src/video_core/debug_utils')
| -rw-r--r-- | src/video_core/debug_utils/debug_utils.cpp | 23 | ||||
| -rw-r--r-- | src/video_core/debug_utils/debug_utils.h | 1 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/video_core/debug_utils/debug_utils.cpp b/src/video_core/debug_utils/debug_utils.cpp index 572b4fd62..7cb7a6ef4 100644 --- a/src/video_core/debug_utils/debug_utils.cpp +++ b/src/video_core/debug_utils/debug_utils.cpp | |||
| @@ -131,11 +131,14 @@ void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data | |||
| 131 | // into shbin format (separate type and component mask). | 131 | // into shbin format (separate type and component mask). |
| 132 | union OutputRegisterInfo { | 132 | union OutputRegisterInfo { |
| 133 | enum Type : u64 { | 133 | enum Type : u64 { |
| 134 | POSITION = 0, | 134 | POSITION = 0, |
| 135 | COLOR = 2, | 135 | QUATERNION = 1, |
| 136 | TEXCOORD0 = 3, | 136 | COLOR = 2, |
| 137 | TEXCOORD1 = 5, | 137 | TEXCOORD0 = 3, |
| 138 | TEXCOORD2 = 6, | 138 | TEXCOORD1 = 5, |
| 139 | TEXCOORD2 = 6, | ||
| 140 | |||
| 141 | VIEW = 8, | ||
| 139 | }; | 142 | }; |
| 140 | 143 | ||
| 141 | BitField< 0, 64, u64> hex; | 144 | BitField< 0, 64, u64> hex; |
| @@ -157,6 +160,10 @@ void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data | |||
| 157 | { OutputAttributes::POSITION_Y, { OutputRegisterInfo::POSITION, 2} }, | 160 | { OutputAttributes::POSITION_Y, { OutputRegisterInfo::POSITION, 2} }, |
| 158 | { OutputAttributes::POSITION_Z, { OutputRegisterInfo::POSITION, 4} }, | 161 | { OutputAttributes::POSITION_Z, { OutputRegisterInfo::POSITION, 4} }, |
| 159 | { OutputAttributes::POSITION_W, { OutputRegisterInfo::POSITION, 8} }, | 162 | { OutputAttributes::POSITION_W, { OutputRegisterInfo::POSITION, 8} }, |
| 163 | { OutputAttributes::QUATERNION_X, { OutputRegisterInfo::QUATERNION, 1} }, | ||
| 164 | { OutputAttributes::QUATERNION_Y, { OutputRegisterInfo::QUATERNION, 2} }, | ||
| 165 | { OutputAttributes::QUATERNION_Z, { OutputRegisterInfo::QUATERNION, 4} }, | ||
| 166 | { OutputAttributes::QUATERNION_W, { OutputRegisterInfo::QUATERNION, 8} }, | ||
| 160 | { OutputAttributes::COLOR_R, { OutputRegisterInfo::COLOR, 1} }, | 167 | { OutputAttributes::COLOR_R, { OutputRegisterInfo::COLOR, 1} }, |
| 161 | { OutputAttributes::COLOR_G, { OutputRegisterInfo::COLOR, 2} }, | 168 | { OutputAttributes::COLOR_G, { OutputRegisterInfo::COLOR, 2} }, |
| 162 | { OutputAttributes::COLOR_B, { OutputRegisterInfo::COLOR, 4} }, | 169 | { OutputAttributes::COLOR_B, { OutputRegisterInfo::COLOR, 4} }, |
| @@ -166,7 +173,10 @@ void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data | |||
| 166 | { OutputAttributes::TEXCOORD1_U, { OutputRegisterInfo::TEXCOORD1, 1} }, | 173 | { OutputAttributes::TEXCOORD1_U, { OutputRegisterInfo::TEXCOORD1, 1} }, |
| 167 | { OutputAttributes::TEXCOORD1_V, { OutputRegisterInfo::TEXCOORD1, 2} }, | 174 | { OutputAttributes::TEXCOORD1_V, { OutputRegisterInfo::TEXCOORD1, 2} }, |
| 168 | { OutputAttributes::TEXCOORD2_U, { OutputRegisterInfo::TEXCOORD2, 1} }, | 175 | { OutputAttributes::TEXCOORD2_U, { OutputRegisterInfo::TEXCOORD2, 1} }, |
| 169 | { OutputAttributes::TEXCOORD2_V, { OutputRegisterInfo::TEXCOORD2, 2} } | 176 | { OutputAttributes::TEXCOORD2_V, { OutputRegisterInfo::TEXCOORD2, 2} }, |
| 177 | { OutputAttributes::VIEW_X, { OutputRegisterInfo::VIEW, 1} }, | ||
| 178 | { OutputAttributes::VIEW_Y, { OutputRegisterInfo::VIEW, 2} }, | ||
| 179 | { OutputAttributes::VIEW_Z, { OutputRegisterInfo::VIEW, 4} } | ||
| 170 | }; | 180 | }; |
| 171 | 181 | ||
| 172 | for (const auto& semantic : std::vector<OutputAttributes::Semantic>{ | 182 | for (const auto& semantic : std::vector<OutputAttributes::Semantic>{ |
| @@ -239,6 +249,7 @@ void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data | |||
| 239 | 249 | ||
| 240 | // TODO: Create a label table for "main" | 250 | // TODO: Create a label table for "main" |
| 241 | 251 | ||
| 252 | // TODO: Write uniforms as constants | ||
| 242 | 253 | ||
| 243 | // Write data to file | 254 | // Write data to file |
| 244 | static int dump_index = 0; | 255 | static int dump_index = 0; |
diff --git a/src/video_core/debug_utils/debug_utils.h b/src/video_core/debug_utils/debug_utils.h index 81eea30a9..4939e6c06 100644 --- a/src/video_core/debug_utils/debug_utils.h +++ b/src/video_core/debug_utils/debug_utils.h | |||
| @@ -158,7 +158,6 @@ extern std::shared_ptr<DebugContext> g_debug_context; // TODO: Get rid of this g | |||
| 158 | namespace DebugUtils { | 158 | namespace DebugUtils { |
| 159 | 159 | ||
| 160 | #define PICA_DUMP_GEOMETRY 0 | 160 | #define PICA_DUMP_GEOMETRY 0 |
| 161 | #define PICA_DUMP_SHADERS 0 | ||
| 162 | #define PICA_DUMP_TEXTURES 0 | 161 | #define PICA_DUMP_TEXTURES 0 |
| 163 | #define PICA_LOG_TEV 0 | 162 | #define PICA_LOG_TEV 0 |
| 164 | 163 | ||