diff options
| author | 2015-05-21 02:51:28 +0200 | |
|---|---|---|
| committer | 2015-07-13 22:27:21 +0200 | |
| commit | fd62580985b2f2d8f65b940148211bedc8d08404 (patch) | |
| tree | b1a8c80d442ee654b63233f60c1ae1c70048e982 /src/core/tracer/recorder.cpp | |
| parent | Clean up command_processor.cpp. (diff) | |
| download | yuzu-fd62580985b2f2d8f65b940148211bedc8d08404.tar.gz yuzu-fd62580985b2f2d8f65b940148211bedc8d08404.tar.xz yuzu-fd62580985b2f2d8f65b940148211bedc8d08404.zip | |
CiTrace: Record default vertex attributes.
Diffstat (limited to 'src/core/tracer/recorder.cpp')
| -rw-r--r-- | src/core/tracer/recorder.cpp | 70 |
1 files changed, 39 insertions, 31 deletions
diff --git a/src/core/tracer/recorder.cpp b/src/core/tracer/recorder.cpp index 73ebdd388..c5251634b 100644 --- a/src/core/tracer/recorder.cpp +++ b/src/core/tracer/recorder.cpp | |||
| @@ -12,18 +12,20 @@ | |||
| 12 | 12 | ||
| 13 | namespace CiTrace { | 13 | namespace CiTrace { |
| 14 | 14 | ||
| 15 | Recorder::Recorder(u32* gpu_registers, u32 gpu_registers_size, | 15 | Recorder::Recorder(u32* gpu_registers, u32 gpu_registers_size, |
| 16 | u32* lcd_registers, u32 lcd_registers_size, | 16 | u32* lcd_registers, u32 lcd_registers_size, |
| 17 | u32* pica_registers, u32 pica_registers_size, | 17 | u32* pica_registers, u32 pica_registers_size, |
| 18 | u32* vs_program_binary, u32 vs_program_binary_size, | 18 | u32* default_attributes, u32 default_attributes_size, |
| 19 | u32* vs_swizzle_data, u32 vs_swizzle_data_size, | 19 | u32* vs_program_binary, u32 vs_program_binary_size, |
| 20 | u32* vs_float_uniforms, u32 vs_float_uniforms_size, | 20 | u32* vs_swizzle_data, u32 vs_swizzle_data_size, |
| 21 | u32* gs_program_binary, u32 gs_program_binary_size, | 21 | u32* vs_float_uniforms, u32 vs_float_uniforms_size, |
| 22 | u32* gs_swizzle_data, u32 gs_swizzle_data_size, | 22 | u32* gs_program_binary, u32 gs_program_binary_size, |
| 23 | u32* gs_float_uniforms, u32 gs_float_uniforms_size) | 23 | u32* gs_swizzle_data, u32 gs_swizzle_data_size, |
| 24 | u32* gs_float_uniforms, u32 gs_float_uniforms_size) | ||
| 24 | : gpu_registers(gpu_registers, gpu_registers + gpu_registers_size), | 25 | : gpu_registers(gpu_registers, gpu_registers + gpu_registers_size), |
| 25 | lcd_registers(lcd_registers, lcd_registers + lcd_registers_size), | 26 | lcd_registers(lcd_registers, lcd_registers + lcd_registers_size), |
| 26 | pica_registers(pica_registers, pica_registers + pica_registers_size), | 27 | pica_registers(pica_registers, pica_registers + pica_registers_size), |
| 28 | default_attributes(default_attributes, default_attributes + default_attributes_size), | ||
| 27 | vs_program_binary(vs_program_binary, vs_program_binary + vs_program_binary_size), | 29 | vs_program_binary(vs_program_binary, vs_program_binary + vs_program_binary_size), |
| 28 | vs_swizzle_data(vs_swizzle_data, vs_swizzle_data + vs_swizzle_data_size), | 30 | vs_swizzle_data(vs_swizzle_data, vs_swizzle_data + vs_swizzle_data_size), |
| 29 | vs_float_uniforms(vs_float_uniforms, vs_float_uniforms + vs_float_uniforms_size), | 31 | vs_float_uniforms(vs_float_uniforms, vs_float_uniforms + vs_float_uniforms_size), |
| @@ -43,27 +45,29 @@ void Recorder::Finish(const std::string& filename) { | |||
| 43 | // Calculate file offsets | 45 | // Calculate file offsets |
| 44 | auto& initial = header.initial_state_offsets; | 46 | auto& initial = header.initial_state_offsets; |
| 45 | 47 | ||
| 46 | initial.gpu_registers_size = gpu_registers.size(); | 48 | initial.gpu_registers_size = gpu_registers.size(); |
| 47 | initial.lcd_registers_size = lcd_registers.size(); | 49 | initial.lcd_registers_size = lcd_registers.size(); |
| 48 | initial.pica_registers_size = pica_registers.size(); | 50 | initial.pica_registers_size = pica_registers.size(); |
| 49 | initial.vs_program_binary_size = vs_program_binary.size(); | 51 | initial.default_attributes_size = default_attributes.size(); |
| 50 | initial.vs_swizzle_data_size = vs_swizzle_data.size(); | 52 | initial.vs_program_binary_size = vs_program_binary.size(); |
| 51 | initial.vs_float_uniforms_size = vs_float_uniforms.size(); | 53 | initial.vs_swizzle_data_size = vs_swizzle_data.size(); |
| 52 | initial.gs_program_binary_size = gs_program_binary.size(); | 54 | initial.vs_float_uniforms_size = vs_float_uniforms.size(); |
| 53 | initial.gs_swizzle_data_size = gs_swizzle_data.size(); | 55 | initial.gs_program_binary_size = gs_program_binary.size(); |
| 54 | initial.gs_float_uniforms_size = gs_float_uniforms.size(); | 56 | initial.gs_swizzle_data_size = gs_swizzle_data.size(); |
| 55 | header.stream_size = stream.size(); | 57 | initial.gs_float_uniforms_size = gs_float_uniforms.size(); |
| 56 | 58 | header.stream_size = stream.size(); | |
| 57 | initial.gpu_registers = sizeof(header); | 59 | |
| 58 | initial.lcd_registers = initial.gpu_registers + initial.gpu_registers_size * sizeof(u32); | 60 | initial.gpu_registers = sizeof(header); |
| 59 | initial.pica_registers = initial.lcd_registers + initial.lcd_registers_size * sizeof(u32);; | 61 | initial.lcd_registers = initial.gpu_registers + initial.gpu_registers_size * sizeof(u32); |
| 60 | initial.vs_program_binary = initial.pica_registers + initial.pica_registers_size * sizeof(u32); | 62 | initial.pica_registers = initial.lcd_registers + initial.lcd_registers_size * sizeof(u32);; |
| 61 | initial.vs_swizzle_data = initial.vs_program_binary + initial.vs_program_binary_size * sizeof(u32); | 63 | initial.default_attributes = initial.pica_registers + initial.pica_registers_size * sizeof(u32); |
| 62 | initial.vs_float_uniforms = initial.vs_swizzle_data + initial.vs_swizzle_data_size * sizeof(u32); | 64 | initial.vs_program_binary = initial.default_attributes + initial.default_attributes_size * sizeof(u32); |
| 63 | initial.gs_program_binary = initial.vs_float_uniforms + initial.vs_float_uniforms_size * sizeof(u32); | 65 | initial.vs_swizzle_data = initial.vs_program_binary + initial.vs_program_binary_size * sizeof(u32); |
| 64 | initial.gs_swizzle_data = initial.gs_program_binary + initial.gs_program_binary_size * sizeof(u32); | 66 | initial.vs_float_uniforms = initial.vs_swizzle_data + initial.vs_swizzle_data_size * sizeof(u32); |
| 65 | initial.gs_float_uniforms = initial.gs_swizzle_data + initial.gs_swizzle_data_size * sizeof(u32); | 67 | initial.gs_program_binary = initial.vs_float_uniforms + initial.vs_float_uniforms_size * sizeof(u32); |
| 66 | header.stream_offset = initial.gs_float_uniforms + initial.gs_float_uniforms_size * sizeof(u32); | 68 | initial.gs_swizzle_data = initial.gs_program_binary + initial.gs_program_binary_size * sizeof(u32); |
| 69 | initial.gs_float_uniforms = initial.gs_swizzle_data + initial.gs_swizzle_data_size * sizeof(u32); | ||
| 70 | header.stream_offset = initial.gs_float_uniforms + initial.gs_float_uniforms_size * sizeof(u32); | ||
| 67 | 71 | ||
| 68 | // Iterate through stream elements, update relevant stream element data | 72 | // Iterate through stream elements, update relevant stream element data |
| 69 | for (auto& stream_element : stream) { | 73 | for (auto& stream_element : stream) { |
| @@ -103,9 +107,13 @@ void Recorder::Finish(const std::string& filename) { | |||
| 103 | throw "Failed to write LCD registers"; | 107 | throw "Failed to write LCD registers"; |
| 104 | 108 | ||
| 105 | written = file.WriteArray(pica_registers.data(), pica_registers.size()); | 109 | written = file.WriteArray(pica_registers.data(), pica_registers.size()); |
| 106 | if (written != pica_registers.size() || file.Tell() != initial.vs_program_binary) | 110 | if (written != pica_registers.size() || file.Tell() != initial.default_attributes) |
| 107 | throw "Failed to write Pica registers"; | 111 | throw "Failed to write Pica registers"; |
| 108 | 112 | ||
| 113 | written = file.WriteArray(default_attributes.data(), default_attributes.size()); | ||
| 114 | if (written != default_attributes.size() || file.Tell() != initial.vs_program_binary) | ||
| 115 | throw "Failed to write default vertex attributes"; | ||
| 116 | |||
| 109 | written = file.WriteArray(vs_program_binary.data(), vs_program_binary.size()); | 117 | written = file.WriteArray(vs_program_binary.data(), vs_program_binary.size()); |
| 110 | if (written != vs_program_binary.size() || file.Tell() != initial.vs_swizzle_data) | 118 | if (written != vs_program_binary.size() || file.Tell() != initial.vs_swizzle_data) |
| 111 | throw "Failed to write vertex shader program binary"; | 119 | throw "Failed to write vertex shader program binary"; |