diff options
Diffstat (limited to 'src')
146 files changed, 780 insertions, 751 deletions
diff --git a/src/audio_core/algorithm/filter.cpp b/src/audio_core/algorithm/filter.cpp index 9fcd0614d..f65bf64f7 100644 --- a/src/audio_core/algorithm/filter.cpp +++ b/src/audio_core/algorithm/filter.cpp | |||
| @@ -35,12 +35,12 @@ Filter::Filter(double a0, double a1, double a2, double b0, double b1, double b2) | |||
| 35 | : a1(a1 / a0), a2(a2 / a0), b0(b0 / a0), b1(b1 / a0), b2(b2 / a0) {} | 35 | : a1(a1 / a0), a2(a2 / a0), b0(b0 / a0), b1(b1 / a0), b2(b2 / a0) {} |
| 36 | 36 | ||
| 37 | void Filter::Process(std::vector<s16>& signal) { | 37 | void Filter::Process(std::vector<s16>& signal) { |
| 38 | const size_t num_frames = signal.size() / 2; | 38 | const std::size_t num_frames = signal.size() / 2; |
| 39 | for (size_t i = 0; i < num_frames; i++) { | 39 | for (std::size_t i = 0; i < num_frames; i++) { |
| 40 | std::rotate(in.begin(), in.end() - 1, in.end()); | 40 | std::rotate(in.begin(), in.end() - 1, in.end()); |
| 41 | std::rotate(out.begin(), out.end() - 1, out.end()); | 41 | std::rotate(out.begin(), out.end() - 1, out.end()); |
| 42 | 42 | ||
| 43 | for (size_t ch = 0; ch < channel_count; ch++) { | 43 | for (std::size_t ch = 0; ch < channel_count; ch++) { |
| 44 | in[0][ch] = signal[i * channel_count + ch]; | 44 | in[0][ch] = signal[i * channel_count + ch]; |
| 45 | 45 | ||
| 46 | out[0][ch] = b0 * in[0][ch] + b1 * in[1][ch] + b2 * in[2][ch] - a1 * out[1][ch] - | 46 | out[0][ch] = b0 * in[0][ch] + b1 * in[1][ch] + b2 * in[2][ch] - a1 * out[1][ch] - |
| @@ -54,14 +54,14 @@ void Filter::Process(std::vector<s16>& signal) { | |||
| 54 | /// Calculates the appropriate Q for each biquad in a cascading filter. | 54 | /// Calculates the appropriate Q for each biquad in a cascading filter. |
| 55 | /// @param total_count The total number of biquads to be cascaded. | 55 | /// @param total_count The total number of biquads to be cascaded. |
| 56 | /// @param index 0-index of the biquad to calculate the Q value for. | 56 | /// @param index 0-index of the biquad to calculate the Q value for. |
| 57 | static double CascadingBiquadQ(size_t total_count, size_t index) { | 57 | static double CascadingBiquadQ(std::size_t total_count, std::size_t index) { |
| 58 | const double pole = M_PI * (2 * index + 1) / (4.0 * total_count); | 58 | const double pole = M_PI * (2 * index + 1) / (4.0 * total_count); |
| 59 | return 1.0 / (2.0 * std::cos(pole)); | 59 | return 1.0 / (2.0 * std::cos(pole)); |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | CascadingFilter CascadingFilter::LowPass(double cutoff, size_t cascade_size) { | 62 | CascadingFilter CascadingFilter::LowPass(double cutoff, std::size_t cascade_size) { |
| 63 | std::vector<Filter> cascade(cascade_size); | 63 | std::vector<Filter> cascade(cascade_size); |
| 64 | for (size_t i = 0; i < cascade_size; i++) { | 64 | for (std::size_t i = 0; i < cascade_size; i++) { |
| 65 | cascade[i] = Filter::LowPass(cutoff, CascadingBiquadQ(cascade_size, i)); | 65 | cascade[i] = Filter::LowPass(cutoff, CascadingBiquadQ(cascade_size, i)); |
| 66 | } | 66 | } |
| 67 | return CascadingFilter{std::move(cascade)}; | 67 | return CascadingFilter{std::move(cascade)}; |
diff --git a/src/audio_core/algorithm/filter.h b/src/audio_core/algorithm/filter.h index a41beef98..3546d149b 100644 --- a/src/audio_core/algorithm/filter.h +++ b/src/audio_core/algorithm/filter.h | |||
| @@ -30,7 +30,7 @@ public: | |||
| 30 | void Process(std::vector<s16>& signal); | 30 | void Process(std::vector<s16>& signal); |
| 31 | 31 | ||
| 32 | private: | 32 | private: |
| 33 | static constexpr size_t channel_count = 2; | 33 | static constexpr std::size_t channel_count = 2; |
| 34 | 34 | ||
| 35 | /// Coefficients are in normalized form (a0 = 1.0). | 35 | /// Coefficients are in normalized form (a0 = 1.0). |
| 36 | double a1, a2, b0, b1, b2; | 36 | double a1, a2, b0, b1, b2; |
| @@ -46,7 +46,7 @@ public: | |||
| 46 | /// Creates a cascading low-pass filter. | 46 | /// Creates a cascading low-pass filter. |
| 47 | /// @param cutoff Determines the cutoff frequency. A value from 0.0 to 1.0. | 47 | /// @param cutoff Determines the cutoff frequency. A value from 0.0 to 1.0. |
| 48 | /// @param cascade_size Number of biquads in cascade. | 48 | /// @param cascade_size Number of biquads in cascade. |
| 49 | static CascadingFilter LowPass(double cutoff, size_t cascade_size); | 49 | static CascadingFilter LowPass(double cutoff, std::size_t cascade_size); |
| 50 | 50 | ||
| 51 | /// Passthrough. | 51 | /// Passthrough. |
| 52 | CascadingFilter(); | 52 | CascadingFilter(); |
diff --git a/src/audio_core/algorithm/interpolate.cpp b/src/audio_core/algorithm/interpolate.cpp index 11459821f..3aea9b0f2 100644 --- a/src/audio_core/algorithm/interpolate.cpp +++ b/src/audio_core/algorithm/interpolate.cpp | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | namespace AudioCore { | 14 | namespace AudioCore { |
| 15 | 15 | ||
| 16 | /// The Lanczos kernel | 16 | /// The Lanczos kernel |
| 17 | static double Lanczos(size_t a, double x) { | 17 | static double Lanczos(std::size_t a, double x) { |
| 18 | if (x == 0.0) | 18 | if (x == 0.0) |
| 19 | return 1.0; | 19 | return 1.0; |
| 20 | const double px = M_PI * x; | 20 | const double px = M_PI * x; |
| @@ -37,15 +37,15 @@ std::vector<s16> Interpolate(InterpolationState& state, std::vector<s16> input, | |||
| 37 | } | 37 | } |
| 38 | state.nyquist.Process(input); | 38 | state.nyquist.Process(input); |
| 39 | 39 | ||
| 40 | constexpr size_t taps = InterpolationState::lanczos_taps; | 40 | constexpr std::size_t taps = InterpolationState::lanczos_taps; |
| 41 | const size_t num_frames = input.size() / 2; | 41 | const std::size_t num_frames = input.size() / 2; |
| 42 | 42 | ||
| 43 | std::vector<s16> output; | 43 | std::vector<s16> output; |
| 44 | output.reserve(static_cast<size_t>(input.size() / ratio + 4)); | 44 | output.reserve(static_cast<std::size_t>(input.size() / ratio + 4)); |
| 45 | 45 | ||
| 46 | double& pos = state.position; | 46 | double& pos = state.position; |
| 47 | auto& h = state.history; | 47 | auto& h = state.history; |
| 48 | for (size_t i = 0; i < num_frames; ++i) { | 48 | for (std::size_t i = 0; i < num_frames; ++i) { |
| 49 | std::rotate(h.begin(), h.end() - 1, h.end()); | 49 | std::rotate(h.begin(), h.end() - 1, h.end()); |
| 50 | h[0][0] = input[i * 2 + 0]; | 50 | h[0][0] = input[i * 2 + 0]; |
| 51 | h[0][1] = input[i * 2 + 1]; | 51 | h[0][1] = input[i * 2 + 1]; |
| @@ -53,7 +53,7 @@ std::vector<s16> Interpolate(InterpolationState& state, std::vector<s16> input, | |||
| 53 | while (pos <= 1.0) { | 53 | while (pos <= 1.0) { |
| 54 | double l = 0.0; | 54 | double l = 0.0; |
| 55 | double r = 0.0; | 55 | double r = 0.0; |
| 56 | for (size_t j = 0; j < h.size(); j++) { | 56 | for (std::size_t j = 0; j < h.size(); j++) { |
| 57 | l += Lanczos(taps, pos + j - taps + 1) * h[j][0]; | 57 | l += Lanczos(taps, pos + j - taps + 1) * h[j][0]; |
| 58 | r += Lanczos(taps, pos + j - taps + 1) * h[j][1]; | 58 | r += Lanczos(taps, pos + j - taps + 1) * h[j][1]; |
| 59 | } | 59 | } |
diff --git a/src/audio_core/algorithm/interpolate.h b/src/audio_core/algorithm/interpolate.h index c79c2eef4..edbd6460f 100644 --- a/src/audio_core/algorithm/interpolate.h +++ b/src/audio_core/algorithm/interpolate.h | |||
| @@ -12,8 +12,8 @@ | |||
| 12 | namespace AudioCore { | 12 | namespace AudioCore { |
| 13 | 13 | ||
| 14 | struct InterpolationState { | 14 | struct InterpolationState { |
| 15 | static constexpr size_t lanczos_taps = 4; | 15 | static constexpr std::size_t lanczos_taps = 4; |
| 16 | static constexpr size_t history_size = lanczos_taps * 2 - 1; | 16 | static constexpr std::size_t history_size = lanczos_taps * 2 - 1; |
| 17 | 17 | ||
| 18 | double current_ratio = 0.0; | 18 | double current_ratio = 0.0; |
| 19 | CascadingFilter nyquist; | 19 | CascadingFilter nyquist; |
diff --git a/src/audio_core/audio_out.cpp b/src/audio_core/audio_out.cpp index 12632a95c..0c8f5b18e 100644 --- a/src/audio_core/audio_out.cpp +++ b/src/audio_core/audio_out.cpp | |||
| @@ -39,7 +39,8 @@ StreamPtr AudioOut::OpenStream(u32 sample_rate, u32 num_channels, std::string&& | |||
| 39 | sink->AcquireSinkStream(sample_rate, num_channels, name), std::move(name)); | 39 | sink->AcquireSinkStream(sample_rate, num_channels, name), std::move(name)); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | std::vector<Buffer::Tag> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count) { | 42 | std::vector<Buffer::Tag> AudioOut::GetTagsAndReleaseBuffers(StreamPtr stream, |
| 43 | std::size_t max_count) { | ||
| 43 | return stream->GetTagsAndReleaseBuffers(max_count); | 44 | return stream->GetTagsAndReleaseBuffers(max_count); |
| 44 | } | 45 | } |
| 45 | 46 | ||
diff --git a/src/audio_core/audio_out.h b/src/audio_core/audio_out.h index 39b7e656b..df9607ac7 100644 --- a/src/audio_core/audio_out.h +++ b/src/audio_core/audio_out.h | |||
| @@ -25,7 +25,7 @@ public: | |||
| 25 | Stream::ReleaseCallback&& release_callback); | 25 | Stream::ReleaseCallback&& release_callback); |
| 26 | 26 | ||
| 27 | /// Returns a vector of recently released buffers specified by tag for the specified stream | 27 | /// Returns a vector of recently released buffers specified by tag for the specified stream |
| 28 | std::vector<Buffer::Tag> GetTagsAndReleaseBuffers(StreamPtr stream, size_t max_count); | 28 | std::vector<Buffer::Tag> GetTagsAndReleaseBuffers(StreamPtr stream, std::size_t max_count); |
| 29 | 29 | ||
| 30 | /// Starts an audio stream for playback | 30 | /// Starts an audio stream for playback |
| 31 | void StartStream(StreamPtr stream); | 31 | void StartStream(StreamPtr stream); |
diff --git a/src/audio_core/audio_renderer.cpp b/src/audio_core/audio_renderer.cpp index a75cd3be5..ed3b7defc 100644 --- a/src/audio_core/audio_renderer.cpp +++ b/src/audio_core/audio_renderer.cpp | |||
| @@ -52,8 +52,8 @@ std::vector<u8> AudioRenderer::UpdateAudioRenderer(const std::vector<u8>& input_ | |||
| 52 | memory_pool_count * sizeof(MemoryPoolInfo)); | 52 | memory_pool_count * sizeof(MemoryPoolInfo)); |
| 53 | 53 | ||
| 54 | // Copy VoiceInfo structs | 54 | // Copy VoiceInfo structs |
| 55 | size_t offset{sizeof(UpdateDataHeader) + config.behavior_size + config.memory_pools_size + | 55 | std::size_t offset{sizeof(UpdateDataHeader) + config.behavior_size + config.memory_pools_size + |
| 56 | config.voice_resource_size}; | 56 | config.voice_resource_size}; |
| 57 | for (auto& voice : voices) { | 57 | for (auto& voice : voices) { |
| 58 | std::memcpy(&voice.Info(), input_params.data() + offset, sizeof(VoiceInfo)); | 58 | std::memcpy(&voice.Info(), input_params.data() + offset, sizeof(VoiceInfo)); |
| 59 | offset += sizeof(VoiceInfo); | 59 | offset += sizeof(VoiceInfo); |
| @@ -72,7 +72,7 @@ std::vector<u8> AudioRenderer::UpdateAudioRenderer(const std::vector<u8>& input_ | |||
| 72 | 72 | ||
| 73 | // Update memory pool state | 73 | // Update memory pool state |
| 74 | std::vector<MemoryPoolEntry> memory_pool(memory_pool_count); | 74 | std::vector<MemoryPoolEntry> memory_pool(memory_pool_count); |
| 75 | for (size_t index = 0; index < memory_pool.size(); ++index) { | 75 | for (std::size_t index = 0; index < memory_pool.size(); ++index) { |
| 76 | if (mem_pool_info[index].pool_state == MemoryPoolStates::RequestAttach) { | 76 | if (mem_pool_info[index].pool_state == MemoryPoolStates::RequestAttach) { |
| 77 | memory_pool[index].state = MemoryPoolStates::Attached; | 77 | memory_pool[index].state = MemoryPoolStates::Attached; |
| 78 | } else if (mem_pool_info[index].pool_state == MemoryPoolStates::RequestDetach) { | 78 | } else if (mem_pool_info[index].pool_state == MemoryPoolStates::RequestDetach) { |
| @@ -93,7 +93,7 @@ std::vector<u8> AudioRenderer::UpdateAudioRenderer(const std::vector<u8>& input_ | |||
| 93 | response_data.memory_pools_size); | 93 | response_data.memory_pools_size); |
| 94 | 94 | ||
| 95 | // Copy output voice status | 95 | // Copy output voice status |
| 96 | size_t voice_out_status_offset{sizeof(UpdateDataHeader) + response_data.memory_pools_size}; | 96 | std::size_t voice_out_status_offset{sizeof(UpdateDataHeader) + response_data.memory_pools_size}; |
| 97 | for (const auto& voice : voices) { | 97 | for (const auto& voice : voices) { |
| 98 | std::memcpy(output_params.data() + voice_out_status_offset, &voice.GetOutStatus(), | 98 | std::memcpy(output_params.data() + voice_out_status_offset, &voice.GetOutStatus(), |
| 99 | sizeof(VoiceOutStatus)); | 99 | sizeof(VoiceOutStatus)); |
| @@ -103,12 +103,12 @@ std::vector<u8> AudioRenderer::UpdateAudioRenderer(const std::vector<u8>& input_ | |||
| 103 | return output_params; | 103 | return output_params; |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | void AudioRenderer::VoiceState::SetWaveIndex(size_t index) { | 106 | void AudioRenderer::VoiceState::SetWaveIndex(std::size_t index) { |
| 107 | wave_index = index & 3; | 107 | wave_index = index & 3; |
| 108 | is_refresh_pending = true; | 108 | is_refresh_pending = true; |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | std::vector<s16> AudioRenderer::VoiceState::DequeueSamples(size_t sample_count) { | 111 | std::vector<s16> AudioRenderer::VoiceState::DequeueSamples(std::size_t sample_count) { |
| 112 | if (!IsPlaying()) { | 112 | if (!IsPlaying()) { |
| 113 | return {}; | 113 | return {}; |
| 114 | } | 114 | } |
| @@ -117,9 +117,9 @@ std::vector<s16> AudioRenderer::VoiceState::DequeueSamples(size_t sample_count) | |||
| 117 | RefreshBuffer(); | 117 | RefreshBuffer(); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | const size_t max_size{samples.size() - offset}; | 120 | const std::size_t max_size{samples.size() - offset}; |
| 121 | const size_t dequeue_offset{offset}; | 121 | const std::size_t dequeue_offset{offset}; |
| 122 | size_t size{sample_count * STREAM_NUM_CHANNELS}; | 122 | std::size_t size{sample_count * STREAM_NUM_CHANNELS}; |
| 123 | if (size > max_size) { | 123 | if (size > max_size) { |
| 124 | size = max_size; | 124 | size = max_size; |
| 125 | } | 125 | } |
| @@ -184,7 +184,7 @@ void AudioRenderer::VoiceState::RefreshBuffer() { | |||
| 184 | case 1: | 184 | case 1: |
| 185 | // 1 channel is upsampled to 2 channel | 185 | // 1 channel is upsampled to 2 channel |
| 186 | samples.resize(new_samples.size() * 2); | 186 | samples.resize(new_samples.size() * 2); |
| 187 | for (size_t index = 0; index < new_samples.size(); ++index) { | 187 | for (std::size_t index = 0; index < new_samples.size(); ++index) { |
| 188 | samples[index * 2] = new_samples[index]; | 188 | samples[index * 2] = new_samples[index]; |
| 189 | samples[index * 2 + 1] = new_samples[index]; | 189 | samples[index * 2 + 1] = new_samples[index]; |
| 190 | } | 190 | } |
| @@ -210,7 +210,7 @@ static constexpr s16 ClampToS16(s32 value) { | |||
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | void AudioRenderer::QueueMixedBuffer(Buffer::Tag tag) { | 212 | void AudioRenderer::QueueMixedBuffer(Buffer::Tag tag) { |
| 213 | constexpr size_t BUFFER_SIZE{512}; | 213 | constexpr std::size_t BUFFER_SIZE{512}; |
| 214 | std::vector<s16> buffer(BUFFER_SIZE * stream->GetNumChannels()); | 214 | std::vector<s16> buffer(BUFFER_SIZE * stream->GetNumChannels()); |
| 215 | 215 | ||
| 216 | for (auto& voice : voices) { | 216 | for (auto& voice : voices) { |
| @@ -218,7 +218,7 @@ void AudioRenderer::QueueMixedBuffer(Buffer::Tag tag) { | |||
| 218 | continue; | 218 | continue; |
| 219 | } | 219 | } |
| 220 | 220 | ||
| 221 | size_t offset{}; | 221 | std::size_t offset{}; |
| 222 | s64 samples_remaining{BUFFER_SIZE}; | 222 | s64 samples_remaining{BUFFER_SIZE}; |
| 223 | while (samples_remaining > 0) { | 223 | while (samples_remaining > 0) { |
| 224 | const std::vector<s16> samples{voice.DequeueSamples(samples_remaining)}; | 224 | const std::vector<s16> samples{voice.DequeueSamples(samples_remaining)}; |
diff --git a/src/audio_core/audio_renderer.h b/src/audio_core/audio_renderer.h index 6d069d693..c8d2cd188 100644 --- a/src/audio_core/audio_renderer.h +++ b/src/audio_core/audio_renderer.h | |||
| @@ -184,16 +184,16 @@ private: | |||
| 184 | return info; | 184 | return info; |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | void SetWaveIndex(size_t index); | 187 | void SetWaveIndex(std::size_t index); |
| 188 | std::vector<s16> DequeueSamples(size_t sample_count); | 188 | std::vector<s16> DequeueSamples(std::size_t sample_count); |
| 189 | void UpdateState(); | 189 | void UpdateState(); |
| 190 | void RefreshBuffer(); | 190 | void RefreshBuffer(); |
| 191 | 191 | ||
| 192 | private: | 192 | private: |
| 193 | bool is_in_use{}; | 193 | bool is_in_use{}; |
| 194 | bool is_refresh_pending{}; | 194 | bool is_refresh_pending{}; |
| 195 | size_t wave_index{}; | 195 | std::size_t wave_index{}; |
| 196 | size_t offset{}; | 196 | std::size_t offset{}; |
| 197 | Codec::ADPCMState adpcm_state{}; | 197 | Codec::ADPCMState adpcm_state{}; |
| 198 | InterpolationState interp_state{}; | 198 | InterpolationState interp_state{}; |
| 199 | std::vector<s16> samples; | 199 | std::vector<s16> samples; |
diff --git a/src/audio_core/codec.cpp b/src/audio_core/codec.cpp index c3021403f..454de798b 100644 --- a/src/audio_core/codec.cpp +++ b/src/audio_core/codec.cpp | |||
| @@ -8,27 +8,27 @@ | |||
| 8 | 8 | ||
| 9 | namespace AudioCore::Codec { | 9 | namespace AudioCore::Codec { |
| 10 | 10 | ||
| 11 | std::vector<s16> DecodeADPCM(const u8* const data, size_t size, const ADPCM_Coeff& coeff, | 11 | std::vector<s16> DecodeADPCM(const u8* const data, std::size_t size, const ADPCM_Coeff& coeff, |
| 12 | ADPCMState& state) { | 12 | ADPCMState& state) { |
| 13 | // GC-ADPCM with scale factor and variable coefficients. | 13 | // GC-ADPCM with scale factor and variable coefficients. |
| 14 | // Frames are 8 bytes long containing 14 samples each. | 14 | // Frames are 8 bytes long containing 14 samples each. |
| 15 | // Samples are 4 bits (one nibble) long. | 15 | // Samples are 4 bits (one nibble) long. |
| 16 | 16 | ||
| 17 | constexpr size_t FRAME_LEN = 8; | 17 | constexpr std::size_t FRAME_LEN = 8; |
| 18 | constexpr size_t SAMPLES_PER_FRAME = 14; | 18 | constexpr std::size_t SAMPLES_PER_FRAME = 14; |
| 19 | constexpr std::array<int, 16> SIGNED_NIBBLES = { | 19 | constexpr std::array<int, 16> SIGNED_NIBBLES = { |
| 20 | {0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1}}; | 20 | {0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1}}; |
| 21 | 21 | ||
| 22 | const size_t sample_count = (size / FRAME_LEN) * SAMPLES_PER_FRAME; | 22 | const std::size_t sample_count = (size / FRAME_LEN) * SAMPLES_PER_FRAME; |
| 23 | const size_t ret_size = | 23 | const std::size_t ret_size = |
| 24 | sample_count % 2 == 0 ? sample_count : sample_count + 1; // Ensure multiple of two. | 24 | sample_count % 2 == 0 ? sample_count : sample_count + 1; // Ensure multiple of two. |
| 25 | std::vector<s16> ret(ret_size); | 25 | std::vector<s16> ret(ret_size); |
| 26 | 26 | ||
| 27 | int yn1 = state.yn1, yn2 = state.yn2; | 27 | int yn1 = state.yn1, yn2 = state.yn2; |
| 28 | 28 | ||
| 29 | const size_t NUM_FRAMES = | 29 | const std::size_t NUM_FRAMES = |
| 30 | (sample_count + (SAMPLES_PER_FRAME - 1)) / SAMPLES_PER_FRAME; // Round up. | 30 | (sample_count + (SAMPLES_PER_FRAME - 1)) / SAMPLES_PER_FRAME; // Round up. |
| 31 | for (size_t framei = 0; framei < NUM_FRAMES; framei++) { | 31 | for (std::size_t framei = 0; framei < NUM_FRAMES; framei++) { |
| 32 | const int frame_header = data[framei * FRAME_LEN]; | 32 | const int frame_header = data[framei * FRAME_LEN]; |
| 33 | const int scale = 1 << (frame_header & 0xF); | 33 | const int scale = 1 << (frame_header & 0xF); |
| 34 | const int idx = (frame_header >> 4) & 0x7; | 34 | const int idx = (frame_header >> 4) & 0x7; |
| @@ -53,9 +53,9 @@ std::vector<s16> DecodeADPCM(const u8* const data, size_t size, const ADPCM_Coef | |||
| 53 | return static_cast<s16>(val); | 53 | return static_cast<s16>(val); |
| 54 | }; | 54 | }; |
| 55 | 55 | ||
| 56 | size_t outputi = framei * SAMPLES_PER_FRAME; | 56 | std::size_t outputi = framei * SAMPLES_PER_FRAME; |
| 57 | size_t datai = framei * FRAME_LEN + 1; | 57 | std::size_t datai = framei * FRAME_LEN + 1; |
| 58 | for (size_t i = 0; i < SAMPLES_PER_FRAME && outputi < sample_count; i += 2) { | 58 | for (std::size_t i = 0; i < SAMPLES_PER_FRAME && outputi < sample_count; i += 2) { |
| 59 | const s16 sample1 = decode_sample(SIGNED_NIBBLES[data[datai] >> 4]); | 59 | const s16 sample1 = decode_sample(SIGNED_NIBBLES[data[datai] >> 4]); |
| 60 | ret[outputi] = sample1; | 60 | ret[outputi] = sample1; |
| 61 | outputi++; | 61 | outputi++; |
diff --git a/src/audio_core/codec.h b/src/audio_core/codec.h index 3f845c42c..ef2ce01a8 100644 --- a/src/audio_core/codec.h +++ b/src/audio_core/codec.h | |||
| @@ -38,7 +38,7 @@ using ADPCM_Coeff = std::array<s16, 16>; | |||
| 38 | * @param state ADPCM state, this is updated with new state | 38 | * @param state ADPCM state, this is updated with new state |
| 39 | * @return Decoded stereo signed PCM16 data, sample_count in length | 39 | * @return Decoded stereo signed PCM16 data, sample_count in length |
| 40 | */ | 40 | */ |
| 41 | std::vector<s16> DecodeADPCM(const u8* const data, size_t size, const ADPCM_Coeff& coeff, | 41 | std::vector<s16> DecodeADPCM(const u8* const data, std::size_t size, const ADPCM_Coeff& coeff, |
| 42 | ADPCMState& state); | 42 | ADPCMState& state); |
| 43 | 43 | ||
| 44 | }; // namespace AudioCore::Codec | 44 | }; // namespace AudioCore::Codec |
diff --git a/src/audio_core/cubeb_sink.cpp b/src/audio_core/cubeb_sink.cpp index 79155a7a0..855d64d05 100644 --- a/src/audio_core/cubeb_sink.cpp +++ b/src/audio_core/cubeb_sink.cpp | |||
| @@ -63,8 +63,8 @@ public: | |||
| 63 | // Downsample 6 channels to 2 | 63 | // Downsample 6 channels to 2 |
| 64 | std::vector<s16> buf; | 64 | std::vector<s16> buf; |
| 65 | buf.reserve(samples.size() * num_channels / source_num_channels); | 65 | buf.reserve(samples.size() * num_channels / source_num_channels); |
| 66 | for (size_t i = 0; i < samples.size(); i += source_num_channels) { | 66 | for (std::size_t i = 0; i < samples.size(); i += source_num_channels) { |
| 67 | for (size_t ch = 0; ch < num_channels; ch++) { | 67 | for (std::size_t ch = 0; ch < num_channels; ch++) { |
| 68 | buf.push_back(samples[i + ch]); | 68 | buf.push_back(samples[i + ch]); |
| 69 | } | 69 | } |
| 70 | } | 70 | } |
| @@ -75,7 +75,7 @@ public: | |||
| 75 | queue.Push(samples); | 75 | queue.Push(samples); |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | size_t SamplesInQueue(u32 num_channels) const override { | 78 | std::size_t SamplesInQueue(u32 num_channels) const override { |
| 79 | if (!ctx) | 79 | if (!ctx) |
| 80 | return 0; | 80 | return 0; |
| 81 | 81 | ||
| @@ -159,15 +159,16 @@ long CubebSinkStream::DataCallback(cubeb_stream* stream, void* user_data, const | |||
| 159 | return {}; | 159 | return {}; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | const size_t num_channels = impl->GetNumChannels(); | 162 | const std::size_t num_channels = impl->GetNumChannels(); |
| 163 | const size_t samples_to_write = num_channels * num_frames; | 163 | const std::size_t samples_to_write = num_channels * num_frames; |
| 164 | size_t samples_written; | 164 | std::size_t samples_written; |
| 165 | 165 | ||
| 166 | if (Settings::values.enable_audio_stretching) { | 166 | if (Settings::values.enable_audio_stretching) { |
| 167 | const std::vector<s16> in{impl->queue.Pop()}; | 167 | const std::vector<s16> in{impl->queue.Pop()}; |
| 168 | const size_t num_in{in.size() / num_channels}; | 168 | const std::size_t num_in{in.size() / num_channels}; |
| 169 | s16* const out{reinterpret_cast<s16*>(buffer)}; | 169 | s16* const out{reinterpret_cast<s16*>(buffer)}; |
| 170 | const size_t out_frames = impl->time_stretch.Process(in.data(), num_in, out, num_frames); | 170 | const std::size_t out_frames = |
| 171 | impl->time_stretch.Process(in.data(), num_in, out, num_frames); | ||
| 171 | samples_written = out_frames * num_channels; | 172 | samples_written = out_frames * num_channels; |
| 172 | 173 | ||
| 173 | if (impl->should_flush) { | 174 | if (impl->should_flush) { |
| @@ -184,7 +185,7 @@ long CubebSinkStream::DataCallback(cubeb_stream* stream, void* user_data, const | |||
| 184 | } | 185 | } |
| 185 | 186 | ||
| 186 | // Fill the rest of the frames with last_frame | 187 | // Fill the rest of the frames with last_frame |
| 187 | for (size_t i = samples_written; i < samples_to_write; i += num_channels) { | 188 | for (std::size_t i = samples_written; i < samples_to_write; i += num_channels) { |
| 188 | std::memcpy(buffer + i * sizeof(s16), &impl->last_frame[0], num_channels * sizeof(s16)); | 189 | std::memcpy(buffer + i * sizeof(s16), &impl->last_frame[0], num_channels * sizeof(s16)); |
| 189 | } | 190 | } |
| 190 | 191 | ||
| @@ -206,7 +207,7 @@ std::vector<std::string> ListCubebSinkDevices() { | |||
| 206 | if (cubeb_enumerate_devices(ctx, CUBEB_DEVICE_TYPE_OUTPUT, &collection) != CUBEB_OK) { | 207 | if (cubeb_enumerate_devices(ctx, CUBEB_DEVICE_TYPE_OUTPUT, &collection) != CUBEB_OK) { |
| 207 | LOG_WARNING(Audio_Sink, "Audio output device enumeration not supported"); | 208 | LOG_WARNING(Audio_Sink, "Audio output device enumeration not supported"); |
| 208 | } else { | 209 | } else { |
| 209 | for (size_t i = 0; i < collection.count; i++) { | 210 | for (std::size_t i = 0; i < collection.count; i++) { |
| 210 | const cubeb_device_info& device = collection.device[i]; | 211 | const cubeb_device_info& device = collection.device[i]; |
| 211 | if (device.friendly_name) { | 212 | if (device.friendly_name) { |
| 212 | device_list.emplace_back(device.friendly_name); | 213 | device_list.emplace_back(device.friendly_name); |
diff --git a/src/audio_core/null_sink.h b/src/audio_core/null_sink.h index 2ed0c83b6..a78d78893 100644 --- a/src/audio_core/null_sink.h +++ b/src/audio_core/null_sink.h | |||
| @@ -22,7 +22,7 @@ private: | |||
| 22 | struct NullSinkStreamImpl final : SinkStream { | 22 | struct NullSinkStreamImpl final : SinkStream { |
| 23 | void EnqueueSamples(u32 /*num_channels*/, const std::vector<s16>& /*samples*/) override {} | 23 | void EnqueueSamples(u32 /*num_channels*/, const std::vector<s16>& /*samples*/) override {} |
| 24 | 24 | ||
| 25 | size_t SamplesInQueue(u32 /*num_channels*/) const override { | 25 | std::size_t SamplesInQueue(u32 /*num_channels*/) const override { |
| 26 | return 0; | 26 | return 0; |
| 27 | } | 27 | } |
| 28 | 28 | ||
diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp index 84dcdd98d..386f2ec66 100644 --- a/src/audio_core/stream.cpp +++ b/src/audio_core/stream.cpp | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | 17 | ||
| 18 | namespace AudioCore { | 18 | namespace AudioCore { |
| 19 | 19 | ||
| 20 | constexpr size_t MaxAudioBufferCount{32}; | 20 | constexpr std::size_t MaxAudioBufferCount{32}; |
| 21 | 21 | ||
| 22 | u32 Stream::GetNumChannels() const { | 22 | u32 Stream::GetNumChannels() const { |
| 23 | switch (format) { | 23 | switch (format) { |
| @@ -52,7 +52,7 @@ void Stream::Stop() { | |||
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const { | 54 | s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const { |
| 55 | const size_t num_samples{buffer.GetSamples().size() / GetNumChannels()}; | 55 | const std::size_t num_samples{buffer.GetSamples().size() / GetNumChannels()}; |
| 56 | return CoreTiming::usToCycles((static_cast<u64>(num_samples) * 1000000) / sample_rate); | 56 | return CoreTiming::usToCycles((static_cast<u64>(num_samples) * 1000000) / sample_rate); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| @@ -122,9 +122,9 @@ bool Stream::ContainsBuffer(Buffer::Tag tag) const { | |||
| 122 | return {}; | 122 | return {}; |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers(size_t max_count) { | 125 | std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers(std::size_t max_count) { |
| 126 | std::vector<Buffer::Tag> tags; | 126 | std::vector<Buffer::Tag> tags; |
| 127 | for (size_t count = 0; count < max_count && !released_buffers.empty(); ++count) { | 127 | for (std::size_t count = 0; count < max_count && !released_buffers.empty(); ++count) { |
| 128 | tags.push_back(released_buffers.front()->GetTag()); | 128 | tags.push_back(released_buffers.front()->GetTag()); |
| 129 | released_buffers.pop(); | 129 | released_buffers.pop(); |
| 130 | } | 130 | } |
diff --git a/src/audio_core/stream.h b/src/audio_core/stream.h index 049b92ca9..3a435982d 100644 --- a/src/audio_core/stream.h +++ b/src/audio_core/stream.h | |||
| @@ -49,7 +49,7 @@ public: | |||
| 49 | bool ContainsBuffer(Buffer::Tag tag) const; | 49 | bool ContainsBuffer(Buffer::Tag tag) const; |
| 50 | 50 | ||
| 51 | /// Returns a vector of recently released buffers specified by tag | 51 | /// Returns a vector of recently released buffers specified by tag |
| 52 | std::vector<Buffer::Tag> GetTagsAndReleaseBuffers(size_t max_count); | 52 | std::vector<Buffer::Tag> GetTagsAndReleaseBuffers(std::size_t max_count); |
| 53 | 53 | ||
| 54 | /// Returns true if the stream is currently playing | 54 | /// Returns true if the stream is currently playing |
| 55 | bool IsPlaying() const { | 55 | bool IsPlaying() const { |
| @@ -57,7 +57,7 @@ public: | |||
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | /// Returns the number of queued buffers | 59 | /// Returns the number of queued buffers |
| 60 | size_t GetQueueSize() const { | 60 | std::size_t GetQueueSize() const { |
| 61 | return queued_buffers.size(); | 61 | return queued_buffers.size(); |
| 62 | } | 62 | } |
| 63 | 63 | ||
diff --git a/src/audio_core/time_stretch.cpp b/src/audio_core/time_stretch.cpp index da094c46b..5da35e74e 100644 --- a/src/audio_core/time_stretch.cpp +++ b/src/audio_core/time_stretch.cpp | |||
| @@ -26,7 +26,8 @@ void TimeStretcher::Flush() { | |||
| 26 | m_sound_touch.flush(); | 26 | m_sound_touch.flush(); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | size_t TimeStretcher::Process(const s16* in, size_t num_in, s16* out, size_t num_out) { | 29 | std::size_t TimeStretcher::Process(const s16* in, std::size_t num_in, s16* out, |
| 30 | std::size_t num_out) { | ||
| 30 | const double time_delta = static_cast<double>(num_out) / m_sample_rate; // seconds | 31 | const double time_delta = static_cast<double>(num_out) / m_sample_rate; // seconds |
| 31 | 32 | ||
| 32 | // We were given actual_samples number of samples, and num_samples were requested from us. | 33 | // We were given actual_samples number of samples, and num_samples were requested from us. |
diff --git a/src/audio_core/time_stretch.h b/src/audio_core/time_stretch.h index 7e39e695e..c2286fba1 100644 --- a/src/audio_core/time_stretch.h +++ b/src/audio_core/time_stretch.h | |||
| @@ -20,7 +20,7 @@ public: | |||
| 20 | /// @param out Output sample buffer | 20 | /// @param out Output sample buffer |
| 21 | /// @param num_out Desired number of output frames in `out` | 21 | /// @param num_out Desired number of output frames in `out` |
| 22 | /// @returns Actual number of frames written to `out` | 22 | /// @returns Actual number of frames written to `out` |
| 23 | size_t Process(const s16* in, size_t num_in, s16* out, size_t num_out); | 23 | std::size_t Process(const s16* in, std::size_t num_in, s16* out, std::size_t num_out); |
| 24 | 24 | ||
| 25 | void Clear(); | 25 | void Clear(); |
| 26 | 26 | ||
diff --git a/src/common/alignment.h b/src/common/alignment.h index b9dd38746..225770fab 100644 --- a/src/common/alignment.h +++ b/src/common/alignment.h | |||
| @@ -8,13 +8,13 @@ | |||
| 8 | namespace Common { | 8 | namespace Common { |
| 9 | 9 | ||
| 10 | template <typename T> | 10 | template <typename T> |
| 11 | constexpr T AlignUp(T value, size_t size) { | 11 | constexpr T AlignUp(T value, std::size_t size) { |
| 12 | static_assert(std::is_unsigned_v<T>, "T must be an unsigned value."); | 12 | static_assert(std::is_unsigned_v<T>, "T must be an unsigned value."); |
| 13 | return static_cast<T>(value + (size - value % size) % size); | 13 | return static_cast<T>(value + (size - value % size) % size); |
| 14 | } | 14 | } |
| 15 | 15 | ||
| 16 | template <typename T> | 16 | template <typename T> |
| 17 | constexpr T AlignDown(T value, size_t size) { | 17 | constexpr T AlignDown(T value, std::size_t size) { |
| 18 | static_assert(std::is_unsigned_v<T>, "T must be an unsigned value."); | 18 | static_assert(std::is_unsigned_v<T>, "T must be an unsigned value."); |
| 19 | return static_cast<T>(value - value % size); | 19 | return static_cast<T>(value - value % size); |
| 20 | } | 20 | } |
diff --git a/src/common/bit_field.h b/src/common/bit_field.h index 732201de7..bf803da8d 100644 --- a/src/common/bit_field.h +++ b/src/common/bit_field.h | |||
| @@ -129,8 +129,8 @@ private: | |||
| 129 | 129 | ||
| 130 | public: | 130 | public: |
| 131 | /// Constants to allow limited introspection of fields if needed | 131 | /// Constants to allow limited introspection of fields if needed |
| 132 | static constexpr size_t position = Position; | 132 | static constexpr std::size_t position = Position; |
| 133 | static constexpr size_t bits = Bits; | 133 | static constexpr std::size_t bits = Bits; |
| 134 | static constexpr StorageType mask = (((StorageTypeU)~0) >> (8 * sizeof(T) - bits)) << position; | 134 | static constexpr StorageType mask = (((StorageTypeU)~0) >> (8 * sizeof(T) - bits)) << position; |
| 135 | 135 | ||
| 136 | /** | 136 | /** |
diff --git a/src/common/bit_set.h b/src/common/bit_set.h index 5a197d8c1..5cd1352b2 100644 --- a/src/common/bit_set.h +++ b/src/common/bit_set.h | |||
| @@ -170,14 +170,14 @@ public: | |||
| 170 | m_val |= (IntTy)1 << bit; | 170 | m_val |= (IntTy)1 << bit; |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | static BitSet AllTrue(size_t count) { | 173 | static BitSet AllTrue(std::size_t count) { |
| 174 | return BitSet(count == sizeof(IntTy) * 8 ? ~(IntTy)0 : (((IntTy)1 << count) - 1)); | 174 | return BitSet(count == sizeof(IntTy) * 8 ? ~(IntTy)0 : (((IntTy)1 << count) - 1)); |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | Ref operator[](size_t bit) { | 177 | Ref operator[](std::size_t bit) { |
| 178 | return Ref(this, (IntTy)1 << bit); | 178 | return Ref(this, (IntTy)1 << bit); |
| 179 | } | 179 | } |
| 180 | const Ref operator[](size_t bit) const { | 180 | const Ref operator[](std::size_t bit) const { |
| 181 | return (*const_cast<BitSet*>(this))[bit]; | 181 | return (*const_cast<BitSet*>(this))[bit]; |
| 182 | } | 182 | } |
| 183 | bool operator==(BitSet other) const { | 183 | bool operator==(BitSet other) const { |
diff --git a/src/common/cityhash.cpp b/src/common/cityhash.cpp index de31ffbd8..4e1d874b5 100644 --- a/src/common/cityhash.cpp +++ b/src/common/cityhash.cpp | |||
| @@ -114,7 +114,7 @@ static uint64 HashLen16(uint64 u, uint64 v, uint64 mul) { | |||
| 114 | return b; | 114 | return b; |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | static uint64 HashLen0to16(const char* s, size_t len) { | 117 | static uint64 HashLen0to16(const char* s, std::size_t len) { |
| 118 | if (len >= 8) { | 118 | if (len >= 8) { |
| 119 | uint64 mul = k2 + len * 2; | 119 | uint64 mul = k2 + len * 2; |
| 120 | uint64 a = Fetch64(s) + k2; | 120 | uint64 a = Fetch64(s) + k2; |
| @@ -141,7 +141,7 @@ static uint64 HashLen0to16(const char* s, size_t len) { | |||
| 141 | 141 | ||
| 142 | // This probably works well for 16-byte strings as well, but it may be overkill | 142 | // This probably works well for 16-byte strings as well, but it may be overkill |
| 143 | // in that case. | 143 | // in that case. |
| 144 | static uint64 HashLen17to32(const char* s, size_t len) { | 144 | static uint64 HashLen17to32(const char* s, std::size_t len) { |
| 145 | uint64 mul = k2 + len * 2; | 145 | uint64 mul = k2 + len * 2; |
| 146 | uint64 a = Fetch64(s) * k1; | 146 | uint64 a = Fetch64(s) * k1; |
| 147 | uint64 b = Fetch64(s + 8); | 147 | uint64 b = Fetch64(s + 8); |
| @@ -170,7 +170,7 @@ static pair<uint64, uint64> WeakHashLen32WithSeeds(const char* s, uint64 a, uint | |||
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | // Return an 8-byte hash for 33 to 64 bytes. | 172 | // Return an 8-byte hash for 33 to 64 bytes. |
| 173 | static uint64 HashLen33to64(const char* s, size_t len) { | 173 | static uint64 HashLen33to64(const char* s, std::size_t len) { |
| 174 | uint64 mul = k2 + len * 2; | 174 | uint64 mul = k2 + len * 2; |
| 175 | uint64 a = Fetch64(s) * k2; | 175 | uint64 a = Fetch64(s) * k2; |
| 176 | uint64 b = Fetch64(s + 8); | 176 | uint64 b = Fetch64(s + 8); |
| @@ -191,7 +191,7 @@ static uint64 HashLen33to64(const char* s, size_t len) { | |||
| 191 | return b + x; | 191 | return b + x; |
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | uint64 CityHash64(const char* s, size_t len) { | 194 | uint64 CityHash64(const char* s, std::size_t len) { |
| 195 | if (len <= 32) { | 195 | if (len <= 32) { |
| 196 | if (len <= 16) { | 196 | if (len <= 16) { |
| 197 | return HashLen0to16(s, len); | 197 | return HashLen0to16(s, len); |
| @@ -212,7 +212,7 @@ uint64 CityHash64(const char* s, size_t len) { | |||
| 212 | x = x * k1 + Fetch64(s); | 212 | x = x * k1 + Fetch64(s); |
| 213 | 213 | ||
| 214 | // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks. | 214 | // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks. |
| 215 | len = (len - 1) & ~static_cast<size_t>(63); | 215 | len = (len - 1) & ~static_cast<std::size_t>(63); |
| 216 | do { | 216 | do { |
| 217 | x = Rotate(x + y + v.first + Fetch64(s + 8), 37) * k1; | 217 | x = Rotate(x + y + v.first + Fetch64(s + 8), 37) * k1; |
| 218 | y = Rotate(y + v.second + Fetch64(s + 48), 42) * k1; | 218 | y = Rotate(y + v.second + Fetch64(s + 48), 42) * k1; |
| @@ -229,17 +229,17 @@ uint64 CityHash64(const char* s, size_t len) { | |||
| 229 | HashLen16(v.second, w.second) + x); | 229 | HashLen16(v.second, w.second) + x); |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | uint64 CityHash64WithSeed(const char* s, size_t len, uint64 seed) { | 232 | uint64 CityHash64WithSeed(const char* s, std::size_t len, uint64 seed) { |
| 233 | return CityHash64WithSeeds(s, len, k2, seed); | 233 | return CityHash64WithSeeds(s, len, k2, seed); |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | uint64 CityHash64WithSeeds(const char* s, size_t len, uint64 seed0, uint64 seed1) { | 236 | uint64 CityHash64WithSeeds(const char* s, std::size_t len, uint64 seed0, uint64 seed1) { |
| 237 | return HashLen16(CityHash64(s, len) - seed0, seed1); | 237 | return HashLen16(CityHash64(s, len) - seed0, seed1); |
| 238 | } | 238 | } |
| 239 | 239 | ||
| 240 | // A subroutine for CityHash128(). Returns a decent 128-bit hash for strings | 240 | // A subroutine for CityHash128(). Returns a decent 128-bit hash for strings |
| 241 | // of any length representable in signed long. Based on City and Murmur. | 241 | // of any length representable in signed long. Based on City and Murmur. |
| 242 | static uint128 CityMurmur(const char* s, size_t len, uint128 seed) { | 242 | static uint128 CityMurmur(const char* s, std::size_t len, uint128 seed) { |
| 243 | uint64 a = Uint128Low64(seed); | 243 | uint64 a = Uint128Low64(seed); |
| 244 | uint64 b = Uint128High64(seed); | 244 | uint64 b = Uint128High64(seed); |
| 245 | uint64 c = 0; | 245 | uint64 c = 0; |
| @@ -269,7 +269,7 @@ static uint128 CityMurmur(const char* s, size_t len, uint128 seed) { | |||
| 269 | return uint128(a ^ b, HashLen16(b, a)); | 269 | return uint128(a ^ b, HashLen16(b, a)); |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | uint128 CityHash128WithSeed(const char* s, size_t len, uint128 seed) { | 272 | uint128 CityHash128WithSeed(const char* s, std::size_t len, uint128 seed) { |
| 273 | if (len < 128) { | 273 | if (len < 128) { |
| 274 | return CityMurmur(s, len, seed); | 274 | return CityMurmur(s, len, seed); |
| 275 | } | 275 | } |
| @@ -313,7 +313,7 @@ uint128 CityHash128WithSeed(const char* s, size_t len, uint128 seed) { | |||
| 313 | w.first *= 9; | 313 | w.first *= 9; |
| 314 | v.first *= k0; | 314 | v.first *= k0; |
| 315 | // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s. | 315 | // If 0 < len < 128, hash up to 4 chunks of 32 bytes each from the end of s. |
| 316 | for (size_t tail_done = 0; tail_done < len;) { | 316 | for (std::size_t tail_done = 0; tail_done < len;) { |
| 317 | tail_done += 32; | 317 | tail_done += 32; |
| 318 | y = Rotate(x + y, 42) * k0 + v.second; | 318 | y = Rotate(x + y, 42) * k0 + v.second; |
| 319 | w.first += Fetch64(s + len - tail_done + 16); | 319 | w.first += Fetch64(s + len - tail_done + 16); |
| @@ -331,7 +331,7 @@ uint128 CityHash128WithSeed(const char* s, size_t len, uint128 seed) { | |||
| 331 | return uint128(HashLen16(x + v.second, w.second) + y, HashLen16(x + w.second, y + v.second)); | 331 | return uint128(HashLen16(x + v.second, w.second) + y, HashLen16(x + w.second, y + v.second)); |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | uint128 CityHash128(const char* s, size_t len) { | 334 | uint128 CityHash128(const char* s, std::size_t len) { |
| 335 | return len >= 16 | 335 | return len >= 16 |
| 336 | ? CityHash128WithSeed(s + 16, len - 16, uint128(Fetch64(s), Fetch64(s + 8) + k0)) | 336 | ? CityHash128WithSeed(s + 16, len - 16, uint128(Fetch64(s), Fetch64(s + 8) + k0)) |
| 337 | : CityHash128WithSeed(s, len, uint128(k0, k1)); | 337 | : CityHash128WithSeed(s, len, uint128(k0, k1)); |
diff --git a/src/common/cityhash.h b/src/common/cityhash.h index bcebdb150..4b94f8e18 100644 --- a/src/common/cityhash.h +++ b/src/common/cityhash.h | |||
| @@ -63,7 +63,7 @@ | |||
| 63 | 63 | ||
| 64 | #include <utility> | 64 | #include <utility> |
| 65 | #include <stdint.h> | 65 | #include <stdint.h> |
| 66 | #include <stdlib.h> // for size_t. | 66 | #include <stdlib.h> // for std::size_t. |
| 67 | 67 | ||
| 68 | namespace Common { | 68 | namespace Common { |
| 69 | 69 | ||
| @@ -77,22 +77,22 @@ inline uint64_t Uint128High64(const uint128& x) { | |||
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | // Hash function for a byte array. | 79 | // Hash function for a byte array. |
| 80 | uint64_t CityHash64(const char* buf, size_t len); | 80 | uint64_t CityHash64(const char* buf, std::size_t len); |
| 81 | 81 | ||
| 82 | // Hash function for a byte array. For convenience, a 64-bit seed is also | 82 | // Hash function for a byte array. For convenience, a 64-bit seed is also |
| 83 | // hashed into the result. | 83 | // hashed into the result. |
| 84 | uint64_t CityHash64WithSeed(const char* buf, size_t len, uint64_t seed); | 84 | uint64_t CityHash64WithSeed(const char* buf, std::size_t len, uint64_t seed); |
| 85 | 85 | ||
| 86 | // Hash function for a byte array. For convenience, two seeds are also | 86 | // Hash function for a byte array. For convenience, two seeds are also |
| 87 | // hashed into the result. | 87 | // hashed into the result. |
| 88 | uint64_t CityHash64WithSeeds(const char* buf, size_t len, uint64_t seed0, uint64_t seed1); | 88 | uint64_t CityHash64WithSeeds(const char* buf, std::size_t len, uint64_t seed0, uint64_t seed1); |
| 89 | 89 | ||
| 90 | // Hash function for a byte array. | 90 | // Hash function for a byte array. |
| 91 | uint128 CityHash128(const char* s, size_t len); | 91 | uint128 CityHash128(const char* s, std::size_t len); |
| 92 | 92 | ||
| 93 | // Hash function for a byte array. For convenience, a 128-bit seed is also | 93 | // Hash function for a byte array. For convenience, a 128-bit seed is also |
| 94 | // hashed into the result. | 94 | // hashed into the result. |
| 95 | uint128 CityHash128WithSeed(const char* s, size_t len, uint128 seed); | 95 | uint128 CityHash128WithSeed(const char* s, std::size_t len, uint128 seed); |
| 96 | 96 | ||
| 97 | // Hash 128 input bits down to 64 bits of output. | 97 | // Hash 128 input bits down to 64 bits of output. |
| 98 | // This is intended to be a reasonably good hash function. | 98 | // This is intended to be a reasonably good hash function. |
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp index baa721481..21a0b9738 100644 --- a/src/common/file_util.cpp +++ b/src/common/file_util.cpp | |||
| @@ -76,7 +76,7 @@ namespace FileUtil { | |||
| 76 | // Modifies argument. | 76 | // Modifies argument. |
| 77 | static void StripTailDirSlashes(std::string& fname) { | 77 | static void StripTailDirSlashes(std::string& fname) { |
| 78 | if (fname.length() > 1) { | 78 | if (fname.length() > 1) { |
| 79 | size_t i = fname.length(); | 79 | std::size_t i = fname.length(); |
| 80 | while (i > 0 && fname[i - 1] == DIR_SEP_CHR) | 80 | while (i > 0 && fname[i - 1] == DIR_SEP_CHR) |
| 81 | --i; | 81 | --i; |
| 82 | fname.resize(i); | 82 | fname.resize(i); |
| @@ -201,7 +201,7 @@ bool CreateFullPath(const std::string& fullPath) { | |||
| 201 | return true; | 201 | return true; |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | size_t position = 0; | 204 | std::size_t position = 0; |
| 205 | while (true) { | 205 | while (true) { |
| 206 | // Find next sub path | 206 | // Find next sub path |
| 207 | position = fullPath.find(DIR_SEP_CHR, position); | 207 | position = fullPath.find(DIR_SEP_CHR, position); |
| @@ -299,7 +299,7 @@ bool Copy(const std::string& srcFilename, const std::string& destFilename) { | |||
| 299 | std::array<char, 1024> buffer; | 299 | std::array<char, 1024> buffer; |
| 300 | while (!feof(input.get())) { | 300 | while (!feof(input.get())) { |
| 301 | // read input | 301 | // read input |
| 302 | size_t rnum = fread(buffer.data(), sizeof(char), buffer.size(), input.get()); | 302 | std::size_t rnum = fread(buffer.data(), sizeof(char), buffer.size(), input.get()); |
| 303 | if (rnum != buffer.size()) { | 303 | if (rnum != buffer.size()) { |
| 304 | if (ferror(input.get()) != 0) { | 304 | if (ferror(input.get()) != 0) { |
| 305 | LOG_ERROR(Common_Filesystem, "failed reading from source, {} --> {}: {}", | 305 | LOG_ERROR(Common_Filesystem, "failed reading from source, {} --> {}: {}", |
| @@ -309,7 +309,7 @@ bool Copy(const std::string& srcFilename, const std::string& destFilename) { | |||
| 309 | } | 309 | } |
| 310 | 310 | ||
| 311 | // write output | 311 | // write output |
| 312 | size_t wnum = fwrite(buffer.data(), sizeof(char), rnum, output.get()); | 312 | std::size_t wnum = fwrite(buffer.data(), sizeof(char), rnum, output.get()); |
| 313 | if (wnum != rnum) { | 313 | if (wnum != rnum) { |
| 314 | LOG_ERROR(Common_Filesystem, "failed writing to output, {} --> {}: {}", srcFilename, | 314 | LOG_ERROR(Common_Filesystem, "failed writing to output, {} --> {}: {}", srcFilename, |
| 315 | destFilename, GetLastErrorMsg()); | 315 | destFilename, GetLastErrorMsg()); |
| @@ -756,11 +756,11 @@ std::string GetNANDRegistrationDir(bool system) { | |||
| 756 | return GetUserPath(UserPath::NANDDir) + "user/Contents/registered/"; | 756 | return GetUserPath(UserPath::NANDDir) + "user/Contents/registered/"; |
| 757 | } | 757 | } |
| 758 | 758 | ||
| 759 | size_t WriteStringToFile(bool text_file, const std::string& str, const char* filename) { | 759 | std::size_t WriteStringToFile(bool text_file, const std::string& str, const char* filename) { |
| 760 | return FileUtil::IOFile(filename, text_file ? "w" : "wb").WriteBytes(str.data(), str.size()); | 760 | return FileUtil::IOFile(filename, text_file ? "w" : "wb").WriteBytes(str.data(), str.size()); |
| 761 | } | 761 | } |
| 762 | 762 | ||
| 763 | size_t ReadFileToString(bool text_file, const char* filename, std::string& str) { | 763 | std::size_t ReadFileToString(bool text_file, const char* filename, std::string& str) { |
| 764 | IOFile file(filename, text_file ? "r" : "rb"); | 764 | IOFile file(filename, text_file ? "r" : "rb"); |
| 765 | 765 | ||
| 766 | if (!file.IsOpen()) | 766 | if (!file.IsOpen()) |
| @@ -829,7 +829,7 @@ std::vector<std::string> SplitPathComponents(std::string_view filename) { | |||
| 829 | std::string_view GetParentPath(std::string_view path) { | 829 | std::string_view GetParentPath(std::string_view path) { |
| 830 | const auto name_bck_index = path.rfind('\\'); | 830 | const auto name_bck_index = path.rfind('\\'); |
| 831 | const auto name_fwd_index = path.rfind('/'); | 831 | const auto name_fwd_index = path.rfind('/'); |
| 832 | size_t name_index; | 832 | std::size_t name_index; |
| 833 | 833 | ||
| 834 | if (name_bck_index == std::string_view::npos || name_fwd_index == std::string_view::npos) { | 834 | if (name_bck_index == std::string_view::npos || name_fwd_index == std::string_view::npos) { |
| 835 | name_index = std::min(name_bck_index, name_fwd_index); | 835 | name_index = std::min(name_bck_index, name_fwd_index); |
| @@ -868,7 +868,7 @@ std::string_view GetFilename(std::string_view path) { | |||
| 868 | } | 868 | } |
| 869 | 869 | ||
| 870 | std::string_view GetExtensionFromFilename(std::string_view name) { | 870 | std::string_view GetExtensionFromFilename(std::string_view name) { |
| 871 | const size_t index = name.rfind('.'); | 871 | const std::size_t index = name.rfind('.'); |
| 872 | 872 | ||
| 873 | if (index == std::string_view::npos) { | 873 | if (index == std::string_view::npos) { |
| 874 | return {}; | 874 | return {}; |
diff --git a/src/common/file_util.h b/src/common/file_util.h index 2f13d0b6b..24c1e413c 100644 --- a/src/common/file_util.h +++ b/src/common/file_util.h | |||
| @@ -143,8 +143,9 @@ const std::string& GetExeDirectory(); | |||
| 143 | std::string AppDataRoamingDirectory(); | 143 | std::string AppDataRoamingDirectory(); |
| 144 | #endif | 144 | #endif |
| 145 | 145 | ||
| 146 | size_t WriteStringToFile(bool text_file, const std::string& str, const char* filename); | 146 | std::size_t WriteStringToFile(bool text_file, const std::string& str, const char* filename); |
| 147 | size_t ReadFileToString(bool text_file, const char* filename, std::string& str); | 147 | |
| 148 | std::size_t ReadFileToString(bool text_file, const char* filename, std::string& str); | ||
| 148 | 149 | ||
| 149 | /** | 150 | /** |
| 150 | * Splits the filename into 8.3 format | 151 | * Splits the filename into 8.3 format |
| @@ -177,10 +178,10 @@ std::string_view RemoveTrailingSlash(std::string_view path); | |||
| 177 | 178 | ||
| 178 | // Creates a new vector containing indices [first, last) from the original. | 179 | // Creates a new vector containing indices [first, last) from the original. |
| 179 | template <typename T> | 180 | template <typename T> |
| 180 | std::vector<T> SliceVector(const std::vector<T>& vector, size_t first, size_t last) { | 181 | std::vector<T> SliceVector(const std::vector<T>& vector, std::size_t first, std::size_t last) { |
| 181 | if (first >= last) | 182 | if (first >= last) |
| 182 | return {}; | 183 | return {}; |
| 183 | last = std::min<size_t>(last, vector.size()); | 184 | last = std::min<std::size_t>(last, vector.size()); |
| 184 | return std::vector<T>(vector.begin() + first, vector.begin() + first + last); | 185 | return std::vector<T>(vector.begin() + first, vector.begin() + first + last); |
| 185 | } | 186 | } |
| 186 | 187 | ||
| @@ -213,47 +214,47 @@ public: | |||
| 213 | bool Close(); | 214 | bool Close(); |
| 214 | 215 | ||
| 215 | template <typename T> | 216 | template <typename T> |
| 216 | size_t ReadArray(T* data, size_t length) const { | 217 | std::size_t ReadArray(T* data, std::size_t length) const { |
| 217 | static_assert(std::is_trivially_copyable_v<T>, | 218 | static_assert(std::is_trivially_copyable_v<T>, |
| 218 | "Given array does not consist of trivially copyable objects"); | 219 | "Given array does not consist of trivially copyable objects"); |
| 219 | 220 | ||
| 220 | if (!IsOpen()) { | 221 | if (!IsOpen()) { |
| 221 | return std::numeric_limits<size_t>::max(); | 222 | return std::numeric_limits<std::size_t>::max(); |
| 222 | } | 223 | } |
| 223 | 224 | ||
| 224 | return std::fread(data, sizeof(T), length, m_file); | 225 | return std::fread(data, sizeof(T), length, m_file); |
| 225 | } | 226 | } |
| 226 | 227 | ||
| 227 | template <typename T> | 228 | template <typename T> |
| 228 | size_t WriteArray(const T* data, size_t length) { | 229 | std::size_t WriteArray(const T* data, std::size_t length) { |
| 229 | static_assert(std::is_trivially_copyable_v<T>, | 230 | static_assert(std::is_trivially_copyable_v<T>, |
| 230 | "Given array does not consist of trivially copyable objects"); | 231 | "Given array does not consist of trivially copyable objects"); |
| 231 | if (!IsOpen()) { | 232 | if (!IsOpen()) { |
| 232 | return std::numeric_limits<size_t>::max(); | 233 | return std::numeric_limits<std::size_t>::max(); |
| 233 | } | 234 | } |
| 234 | 235 | ||
| 235 | return std::fwrite(data, sizeof(T), length, m_file); | 236 | return std::fwrite(data, sizeof(T), length, m_file); |
| 236 | } | 237 | } |
| 237 | 238 | ||
| 238 | template <typename T> | 239 | template <typename T> |
| 239 | size_t ReadBytes(T* data, size_t length) const { | 240 | std::size_t ReadBytes(T* data, std::size_t length) const { |
| 240 | static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable"); | 241 | static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable"); |
| 241 | return ReadArray(reinterpret_cast<char*>(data), length); | 242 | return ReadArray(reinterpret_cast<char*>(data), length); |
| 242 | } | 243 | } |
| 243 | 244 | ||
| 244 | template <typename T> | 245 | template <typename T> |
| 245 | size_t WriteBytes(const T* data, size_t length) { | 246 | std::size_t WriteBytes(const T* data, std::size_t length) { |
| 246 | static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable"); | 247 | static_assert(std::is_trivially_copyable_v<T>, "T must be trivially copyable"); |
| 247 | return WriteArray(reinterpret_cast<const char*>(data), length); | 248 | return WriteArray(reinterpret_cast<const char*>(data), length); |
| 248 | } | 249 | } |
| 249 | 250 | ||
| 250 | template <typename T> | 251 | template <typename T> |
| 251 | size_t WriteObject(const T& object) { | 252 | std::size_t WriteObject(const T& object) { |
| 252 | static_assert(!std::is_pointer_v<T>, "WriteObject arguments must not be a pointer"); | 253 | static_assert(!std::is_pointer_v<T>, "WriteObject arguments must not be a pointer"); |
| 253 | return WriteArray(&object, 1); | 254 | return WriteArray(&object, 1); |
| 254 | } | 255 | } |
| 255 | 256 | ||
| 256 | size_t WriteString(const std::string& str) { | 257 | std::size_t WriteString(const std::string& str) { |
| 257 | return WriteArray(str.c_str(), str.length()); | 258 | return WriteArray(str.c_str(), str.length()); |
| 258 | } | 259 | } |
| 259 | 260 | ||
diff --git a/src/common/hash.h b/src/common/hash.h index 2c761e545..40194d1ee 100644 --- a/src/common/hash.h +++ b/src/common/hash.h | |||
| @@ -17,7 +17,7 @@ namespace Common { | |||
| 17 | * @param len Length of data (in bytes) to compute hash over | 17 | * @param len Length of data (in bytes) to compute hash over |
| 18 | * @returns 64-bit hash value that was computed over the data block | 18 | * @returns 64-bit hash value that was computed over the data block |
| 19 | */ | 19 | */ |
| 20 | static inline u64 ComputeHash64(const void* data, size_t len) { | 20 | static inline u64 ComputeHash64(const void* data, std::size_t len) { |
| 21 | return CityHash64(static_cast<const char*>(data), len); | 21 | return CityHash64(static_cast<const char*>(data), len); |
| 22 | } | 22 | } |
| 23 | 23 | ||
| @@ -63,7 +63,7 @@ struct HashableStruct { | |||
| 63 | return !(*this == o); | 63 | return !(*this == o); |
| 64 | }; | 64 | }; |
| 65 | 65 | ||
| 66 | size_t Hash() const { | 66 | std::size_t Hash() const { |
| 67 | return Common::ComputeStructHash64(state); | 67 | return Common::ComputeStructHash64(state); |
| 68 | } | 68 | } |
| 69 | }; | 69 | }; |
diff --git a/src/common/hex_util.cpp b/src/common/hex_util.cpp index 8e0a9e46f..589ae5cbf 100644 --- a/src/common/hex_util.cpp +++ b/src/common/hex_util.cpp | |||
| @@ -18,7 +18,7 @@ u8 ToHexNibble(char c1) { | |||
| 18 | return 0; | 18 | return 0; |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | std::array<u8, 16> operator""_array16(const char* str, size_t len) { | 21 | std::array<u8, 16> operator""_array16(const char* str, std::size_t len) { |
| 22 | if (len != 32) { | 22 | if (len != 32) { |
| 23 | LOG_ERROR(Common, | 23 | LOG_ERROR(Common, |
| 24 | "Attempting to parse string to array that is not of correct size (expected=32, " | 24 | "Attempting to parse string to array that is not of correct size (expected=32, " |
| @@ -29,7 +29,7 @@ std::array<u8, 16> operator""_array16(const char* str, size_t len) { | |||
| 29 | return HexStringToArray<16>(str); | 29 | return HexStringToArray<16>(str); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | std::array<u8, 32> operator""_array32(const char* str, size_t len) { | 32 | std::array<u8, 32> operator""_array32(const char* str, std::size_t len) { |
| 33 | if (len != 64) { | 33 | if (len != 64) { |
| 34 | LOG_ERROR(Common, | 34 | LOG_ERROR(Common, |
| 35 | "Attempting to parse string to array that is not of correct size (expected=64, " | 35 | "Attempting to parse string to array that is not of correct size (expected=64, " |
diff --git a/src/common/hex_util.h b/src/common/hex_util.h index 5fb79bb72..863a5ccd9 100644 --- a/src/common/hex_util.h +++ b/src/common/hex_util.h | |||
| @@ -14,20 +14,20 @@ namespace Common { | |||
| 14 | 14 | ||
| 15 | u8 ToHexNibble(char c1); | 15 | u8 ToHexNibble(char c1); |
| 16 | 16 | ||
| 17 | template <size_t Size, bool le = false> | 17 | template <std::size_t Size, bool le = false> |
| 18 | std::array<u8, Size> HexStringToArray(std::string_view str) { | 18 | std::array<u8, Size> HexStringToArray(std::string_view str) { |
| 19 | std::array<u8, Size> out{}; | 19 | std::array<u8, Size> out{}; |
| 20 | if constexpr (le) { | 20 | if constexpr (le) { |
| 21 | for (size_t i = 2 * Size - 2; i <= 2 * Size; i -= 2) | 21 | for (std::size_t i = 2 * Size - 2; i <= 2 * Size; i -= 2) |
| 22 | out[i / 2] = (ToHexNibble(str[i]) << 4) | ToHexNibble(str[i + 1]); | 22 | out[i / 2] = (ToHexNibble(str[i]) << 4) | ToHexNibble(str[i + 1]); |
| 23 | } else { | 23 | } else { |
| 24 | for (size_t i = 0; i < 2 * Size; i += 2) | 24 | for (std::size_t i = 0; i < 2 * Size; i += 2) |
| 25 | out[i / 2] = (ToHexNibble(str[i]) << 4) | ToHexNibble(str[i + 1]); | 25 | out[i / 2] = (ToHexNibble(str[i]) << 4) | ToHexNibble(str[i + 1]); |
| 26 | } | 26 | } |
| 27 | return out; | 27 | return out; |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | template <size_t Size> | 30 | template <std::size_t Size> |
| 31 | std::string HexArrayToString(std::array<u8, Size> array, bool upper = true) { | 31 | std::string HexArrayToString(std::array<u8, Size> array, bool upper = true) { |
| 32 | std::string out; | 32 | std::string out; |
| 33 | for (u8 c : array) | 33 | for (u8 c : array) |
| @@ -35,7 +35,7 @@ std::string HexArrayToString(std::array<u8, Size> array, bool upper = true) { | |||
| 35 | return out; | 35 | return out; |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | std::array<u8, 0x10> operator"" _array16(const char* str, size_t len); | 38 | std::array<u8, 0x10> operator"" _array16(const char* str, std::size_t len); |
| 39 | std::array<u8, 0x20> operator"" _array32(const char* str, size_t len); | 39 | std::array<u8, 0x20> operator"" _array32(const char* str, std::size_t len); |
| 40 | 40 | ||
| 41 | } // namespace Common | 41 | } // namespace Common |
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index 1323f8d0f..efd776db6 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp | |||
| @@ -135,7 +135,7 @@ FileBackend::FileBackend(const std::string& filename) | |||
| 135 | void FileBackend::Write(const Entry& entry) { | 135 | void FileBackend::Write(const Entry& entry) { |
| 136 | // prevent logs from going over the maximum size (in case its spamming and the user doesn't | 136 | // prevent logs from going over the maximum size (in case its spamming and the user doesn't |
| 137 | // know) | 137 | // know) |
| 138 | constexpr size_t MAX_BYTES_WRITTEN = 50 * 1024L * 1024L; | 138 | constexpr std::size_t MAX_BYTES_WRITTEN = 50 * 1024L * 1024L; |
| 139 | if (!file.IsOpen() || bytes_written > MAX_BYTES_WRITTEN) { | 139 | if (!file.IsOpen() || bytes_written > MAX_BYTES_WRITTEN) { |
| 140 | return; | 140 | return; |
| 141 | } | 141 | } |
diff --git a/src/common/logging/backend.h b/src/common/logging/backend.h index b3f4b9cef..11edbf1b6 100644 --- a/src/common/logging/backend.h +++ b/src/common/logging/backend.h | |||
| @@ -100,7 +100,7 @@ public: | |||
| 100 | 100 | ||
| 101 | private: | 101 | private: |
| 102 | FileUtil::IOFile file; | 102 | FileUtil::IOFile file; |
| 103 | size_t bytes_written; | 103 | std::size_t bytes_written; |
| 104 | }; | 104 | }; |
| 105 | 105 | ||
| 106 | void AddBackend(std::unique_ptr<Backend> backend); | 106 | void AddBackend(std::unique_ptr<Backend> backend); |
diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp index 2dd331152..2eccbcd8d 100644 --- a/src/common/logging/filter.cpp +++ b/src/common/logging/filter.cpp | |||
| @@ -71,7 +71,7 @@ void Filter::ResetAll(Level level) { | |||
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | void Filter::SetClassLevel(Class log_class, Level level) { | 73 | void Filter::SetClassLevel(Class log_class, Level level) { |
| 74 | class_levels[static_cast<size_t>(log_class)] = level; | 74 | class_levels[static_cast<std::size_t>(log_class)] = level; |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | void Filter::ParseFilterString(std::string_view filter_view) { | 77 | void Filter::ParseFilterString(std::string_view filter_view) { |
| @@ -93,7 +93,8 @@ void Filter::ParseFilterString(std::string_view filter_view) { | |||
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | bool Filter::CheckMessage(Class log_class, Level level) const { | 95 | bool Filter::CheckMessage(Class log_class, Level level) const { |
| 96 | return static_cast<u8>(level) >= static_cast<u8>(class_levels[static_cast<size_t>(log_class)]); | 96 | return static_cast<u8>(level) >= |
| 97 | static_cast<u8>(class_levels[static_cast<std::size_t>(log_class)]); | ||
| 97 | } | 98 | } |
| 98 | 99 | ||
| 99 | bool Filter::IsDebug() const { | 100 | bool Filter::IsDebug() const { |
diff --git a/src/common/logging/filter.h b/src/common/logging/filter.h index f7e3b87c9..773df6f2c 100644 --- a/src/common/logging/filter.h +++ b/src/common/logging/filter.h | |||
| @@ -49,6 +49,6 @@ public: | |||
| 49 | bool IsDebug() const; | 49 | bool IsDebug() const; |
| 50 | 50 | ||
| 51 | private: | 51 | private: |
| 52 | std::array<Level, static_cast<size_t>(Class::Count)> class_levels; | 52 | std::array<Level, static_cast<std::size_t>(Class::Count)> class_levels; |
| 53 | }; | 53 | }; |
| 54 | } // namespace Log | 54 | } // namespace Log |
diff --git a/src/common/memory_util.cpp b/src/common/memory_util.cpp index 09462ccee..9736fb12a 100644 --- a/src/common/memory_util.cpp +++ b/src/common/memory_util.cpp | |||
| @@ -25,7 +25,7 @@ | |||
| 25 | // This is purposely not a full wrapper for virtualalloc/mmap, but it | 25 | // This is purposely not a full wrapper for virtualalloc/mmap, but it |
| 26 | // provides exactly the primitive operations that Dolphin needs. | 26 | // provides exactly the primitive operations that Dolphin needs. |
| 27 | 27 | ||
| 28 | void* AllocateExecutableMemory(size_t size, bool low) { | 28 | void* AllocateExecutableMemory(std::size_t size, bool low) { |
| 29 | #if defined(_WIN32) | 29 | #if defined(_WIN32) |
| 30 | void* ptr = VirtualAlloc(nullptr, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); | 30 | void* ptr = VirtualAlloc(nullptr, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); |
| 31 | #else | 31 | #else |
| @@ -74,7 +74,7 @@ void* AllocateExecutableMemory(size_t size, bool low) { | |||
| 74 | return ptr; | 74 | return ptr; |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | void* AllocateMemoryPages(size_t size) { | 77 | void* AllocateMemoryPages(std::size_t size) { |
| 78 | #ifdef _WIN32 | 78 | #ifdef _WIN32 |
| 79 | void* ptr = VirtualAlloc(nullptr, size, MEM_COMMIT, PAGE_READWRITE); | 79 | void* ptr = VirtualAlloc(nullptr, size, MEM_COMMIT, PAGE_READWRITE); |
| 80 | #else | 80 | #else |
| @@ -90,7 +90,7 @@ void* AllocateMemoryPages(size_t size) { | |||
| 90 | return ptr; | 90 | return ptr; |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | void* AllocateAlignedMemory(size_t size, size_t alignment) { | 93 | void* AllocateAlignedMemory(std::size_t size, std::size_t alignment) { |
| 94 | #ifdef _WIN32 | 94 | #ifdef _WIN32 |
| 95 | void* ptr = _aligned_malloc(size, alignment); | 95 | void* ptr = _aligned_malloc(size, alignment); |
| 96 | #else | 96 | #else |
| @@ -109,7 +109,7 @@ void* AllocateAlignedMemory(size_t size, size_t alignment) { | |||
| 109 | return ptr; | 109 | return ptr; |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | void FreeMemoryPages(void* ptr, size_t size) { | 112 | void FreeMemoryPages(void* ptr, std::size_t size) { |
| 113 | if (ptr) { | 113 | if (ptr) { |
| 114 | #ifdef _WIN32 | 114 | #ifdef _WIN32 |
| 115 | if (!VirtualFree(ptr, 0, MEM_RELEASE)) | 115 | if (!VirtualFree(ptr, 0, MEM_RELEASE)) |
| @@ -130,7 +130,7 @@ void FreeAlignedMemory(void* ptr) { | |||
| 130 | } | 130 | } |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | void WriteProtectMemory(void* ptr, size_t size, bool allowExecute) { | 133 | void WriteProtectMemory(void* ptr, std::size_t size, bool allowExecute) { |
| 134 | #ifdef _WIN32 | 134 | #ifdef _WIN32 |
| 135 | DWORD oldValue; | 135 | DWORD oldValue; |
| 136 | if (!VirtualProtect(ptr, size, allowExecute ? PAGE_EXECUTE_READ : PAGE_READONLY, &oldValue)) | 136 | if (!VirtualProtect(ptr, size, allowExecute ? PAGE_EXECUTE_READ : PAGE_READONLY, &oldValue)) |
| @@ -140,7 +140,7 @@ void WriteProtectMemory(void* ptr, size_t size, bool allowExecute) { | |||
| 140 | #endif | 140 | #endif |
| 141 | } | 141 | } |
| 142 | 142 | ||
| 143 | void UnWriteProtectMemory(void* ptr, size_t size, bool allowExecute) { | 143 | void UnWriteProtectMemory(void* ptr, std::size_t size, bool allowExecute) { |
| 144 | #ifdef _WIN32 | 144 | #ifdef _WIN32 |
| 145 | DWORD oldValue; | 145 | DWORD oldValue; |
| 146 | if (!VirtualProtect(ptr, size, allowExecute ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE, | 146 | if (!VirtualProtect(ptr, size, allowExecute ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE, |
diff --git a/src/common/memory_util.h b/src/common/memory_util.h index 76ca5a30c..aad071979 100644 --- a/src/common/memory_util.h +++ b/src/common/memory_util.h | |||
| @@ -7,13 +7,13 @@ | |||
| 7 | #include <cstddef> | 7 | #include <cstddef> |
| 8 | #include <string> | 8 | #include <string> |
| 9 | 9 | ||
| 10 | void* AllocateExecutableMemory(size_t size, bool low = true); | 10 | void* AllocateExecutableMemory(std::size_t size, bool low = true); |
| 11 | void* AllocateMemoryPages(size_t size); | 11 | void* AllocateMemoryPages(std::size_t size); |
| 12 | void FreeMemoryPages(void* ptr, size_t size); | 12 | void FreeMemoryPages(void* ptr, std::size_t size); |
| 13 | void* AllocateAlignedMemory(size_t size, size_t alignment); | 13 | void* AllocateAlignedMemory(std::size_t size, std::size_t alignment); |
| 14 | void FreeAlignedMemory(void* ptr); | 14 | void FreeAlignedMemory(void* ptr); |
| 15 | void WriteProtectMemory(void* ptr, size_t size, bool executable = false); | 15 | void WriteProtectMemory(void* ptr, std::size_t size, bool executable = false); |
| 16 | void UnWriteProtectMemory(void* ptr, size_t size, bool allowExecute = false); | 16 | void UnWriteProtectMemory(void* ptr, std::size_t size, bool allowExecute = false); |
| 17 | std::string MemUsage(); | 17 | std::string MemUsage(); |
| 18 | 18 | ||
| 19 | inline int GetPageSize() { | 19 | inline int GetPageSize() { |
diff --git a/src/common/misc.cpp b/src/common/misc.cpp index 3fa8a3bc4..68cb86cd1 100644 --- a/src/common/misc.cpp +++ b/src/common/misc.cpp | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | // Call directly after the command or use the error num. | 16 | // Call directly after the command or use the error num. |
| 17 | // This function might change the error code. | 17 | // This function might change the error code. |
| 18 | std::string GetLastErrorMsg() { | 18 | std::string GetLastErrorMsg() { |
| 19 | static const size_t buff_size = 255; | 19 | static const std::size_t buff_size = 255; |
| 20 | char err_str[buff_size]; | 20 | char err_str[buff_size]; |
| 21 | 21 | ||
| 22 | #ifdef _WIN32 | 22 | #ifdef _WIN32 |
diff --git a/src/common/ring_buffer.h b/src/common/ring_buffer.h index 30d934a38..45926c9ec 100644 --- a/src/common/ring_buffer.h +++ b/src/common/ring_buffer.h | |||
| @@ -19,31 +19,31 @@ namespace Common { | |||
| 19 | /// @tparam T Element type | 19 | /// @tparam T Element type |
| 20 | /// @tparam capacity Number of slots in ring buffer | 20 | /// @tparam capacity Number of slots in ring buffer |
| 21 | /// @tparam granularity Slot size in terms of number of elements | 21 | /// @tparam granularity Slot size in terms of number of elements |
| 22 | template <typename T, size_t capacity, size_t granularity = 1> | 22 | template <typename T, std::size_t capacity, std::size_t granularity = 1> |
| 23 | class RingBuffer { | 23 | class RingBuffer { |
| 24 | /// A "slot" is made of `granularity` elements of `T`. | 24 | /// A "slot" is made of `granularity` elements of `T`. |
| 25 | static constexpr size_t slot_size = granularity * sizeof(T); | 25 | static constexpr std::size_t slot_size = granularity * sizeof(T); |
| 26 | // T must be safely memcpy-able and have a trivial default constructor. | 26 | // T must be safely memcpy-able and have a trivial default constructor. |
| 27 | static_assert(std::is_trivial_v<T>); | 27 | static_assert(std::is_trivial_v<T>); |
| 28 | // Ensure capacity is sensible. | 28 | // Ensure capacity is sensible. |
| 29 | static_assert(capacity < std::numeric_limits<size_t>::max() / 2 / granularity); | 29 | static_assert(capacity < std::numeric_limits<std::size_t>::max() / 2 / granularity); |
| 30 | static_assert((capacity & (capacity - 1)) == 0, "capacity must be a power of two"); | 30 | static_assert((capacity & (capacity - 1)) == 0, "capacity must be a power of two"); |
| 31 | // Ensure lock-free. | 31 | // Ensure lock-free. |
| 32 | static_assert(std::atomic<size_t>::is_always_lock_free); | 32 | static_assert(std::atomic<std::size_t>::is_always_lock_free); |
| 33 | 33 | ||
| 34 | public: | 34 | public: |
| 35 | /// Pushes slots into the ring buffer | 35 | /// Pushes slots into the ring buffer |
| 36 | /// @param new_slots Pointer to the slots to push | 36 | /// @param new_slots Pointer to the slots to push |
| 37 | /// @param slot_count Number of slots to push | 37 | /// @param slot_count Number of slots to push |
| 38 | /// @returns The number of slots actually pushed | 38 | /// @returns The number of slots actually pushed |
| 39 | size_t Push(const void* new_slots, size_t slot_count) { | 39 | std::size_t Push(const void* new_slots, std::size_t slot_count) { |
| 40 | const size_t write_index = m_write_index.load(); | 40 | const std::size_t write_index = m_write_index.load(); |
| 41 | const size_t slots_free = capacity + m_read_index.load() - write_index; | 41 | const std::size_t slots_free = capacity + m_read_index.load() - write_index; |
| 42 | const size_t push_count = std::min(slot_count, slots_free); | 42 | const std::size_t push_count = std::min(slot_count, slots_free); |
| 43 | 43 | ||
| 44 | const size_t pos = write_index % capacity; | 44 | const std::size_t pos = write_index % capacity; |
| 45 | const size_t first_copy = std::min(capacity - pos, push_count); | 45 | const std::size_t first_copy = std::min(capacity - pos, push_count); |
| 46 | const size_t second_copy = push_count - first_copy; | 46 | const std::size_t second_copy = push_count - first_copy; |
| 47 | 47 | ||
| 48 | const char* in = static_cast<const char*>(new_slots); | 48 | const char* in = static_cast<const char*>(new_slots); |
| 49 | std::memcpy(m_data.data() + pos * granularity, in, first_copy * slot_size); | 49 | std::memcpy(m_data.data() + pos * granularity, in, first_copy * slot_size); |
| @@ -55,7 +55,7 @@ public: | |||
| 55 | return push_count; | 55 | return push_count; |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | size_t Push(const std::vector<T>& input) { | 58 | std::size_t Push(const std::vector<T>& input) { |
| 59 | return Push(input.data(), input.size()); | 59 | return Push(input.data(), input.size()); |
| 60 | } | 60 | } |
| 61 | 61 | ||
| @@ -63,14 +63,14 @@ public: | |||
| 63 | /// @param output Where to store the popped slots | 63 | /// @param output Where to store the popped slots |
| 64 | /// @param max_slots Maximum number of slots to pop | 64 | /// @param max_slots Maximum number of slots to pop |
| 65 | /// @returns The number of slots actually popped | 65 | /// @returns The number of slots actually popped |
| 66 | size_t Pop(void* output, size_t max_slots = ~size_t(0)) { | 66 | std::size_t Pop(void* output, std::size_t max_slots = ~std::size_t(0)) { |
| 67 | const size_t read_index = m_read_index.load(); | 67 | const std::size_t read_index = m_read_index.load(); |
| 68 | const size_t slots_filled = m_write_index.load() - read_index; | 68 | const std::size_t slots_filled = m_write_index.load() - read_index; |
| 69 | const size_t pop_count = std::min(slots_filled, max_slots); | 69 | const std::size_t pop_count = std::min(slots_filled, max_slots); |
| 70 | 70 | ||
| 71 | const size_t pos = read_index % capacity; | 71 | const std::size_t pos = read_index % capacity; |
| 72 | const size_t first_copy = std::min(capacity - pos, pop_count); | 72 | const std::size_t first_copy = std::min(capacity - pos, pop_count); |
| 73 | const size_t second_copy = pop_count - first_copy; | 73 | const std::size_t second_copy = pop_count - first_copy; |
| 74 | 74 | ||
| 75 | char* out = static_cast<char*>(output); | 75 | char* out = static_cast<char*>(output); |
| 76 | std::memcpy(out, m_data.data() + pos * granularity, first_copy * slot_size); | 76 | std::memcpy(out, m_data.data() + pos * granularity, first_copy * slot_size); |
| @@ -82,28 +82,28 @@ public: | |||
| 82 | return pop_count; | 82 | return pop_count; |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | std::vector<T> Pop(size_t max_slots = ~size_t(0)) { | 85 | std::vector<T> Pop(std::size_t max_slots = ~std::size_t(0)) { |
| 86 | std::vector<T> out(std::min(max_slots, capacity) * granularity); | 86 | std::vector<T> out(std::min(max_slots, capacity) * granularity); |
| 87 | const size_t count = Pop(out.data(), out.size() / granularity); | 87 | const std::size_t count = Pop(out.data(), out.size() / granularity); |
| 88 | out.resize(count * granularity); | 88 | out.resize(count * granularity); |
| 89 | return out; | 89 | return out; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | /// @returns Number of slots used | 92 | /// @returns Number of slots used |
| 93 | size_t Size() const { | 93 | std::size_t Size() const { |
| 94 | return m_write_index.load() - m_read_index.load(); | 94 | return m_write_index.load() - m_read_index.load(); |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | /// @returns Maximum size of ring buffer | 97 | /// @returns Maximum size of ring buffer |
| 98 | constexpr size_t Capacity() const { | 98 | constexpr std::size_t Capacity() const { |
| 99 | return capacity; | 99 | return capacity; |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | private: | 102 | private: |
| 103 | // It is important to align the below variables for performance reasons: | 103 | // It is important to align the below variables for performance reasons: |
| 104 | // Having them on the same cache-line would result in false-sharing between them. | 104 | // Having them on the same cache-line would result in false-sharing between them. |
| 105 | alignas(128) std::atomic<size_t> m_read_index{0}; | 105 | alignas(128) std::atomic<std::size_t> m_read_index{0}; |
| 106 | alignas(128) std::atomic<size_t> m_write_index{0}; | 106 | alignas(128) std::atomic<std::size_t> m_write_index{0}; |
| 107 | 107 | ||
| 108 | std::array<T, granularity * capacity> m_data; | 108 | std::array<T, granularity * capacity> m_data; |
| 109 | }; | 109 | }; |
diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index 0ca663032..c9a5425a7 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp | |||
| @@ -37,7 +37,7 @@ std::string ToUpper(std::string str) { | |||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | // For Debugging. Read out an u8 array. | 39 | // For Debugging. Read out an u8 array. |
| 40 | std::string ArrayToString(const u8* data, size_t size, int line_len, bool spaces) { | 40 | std::string ArrayToString(const u8* data, std::size_t size, int line_len, bool spaces) { |
| 41 | std::ostringstream oss; | 41 | std::ostringstream oss; |
| 42 | oss << std::setfill('0') << std::hex; | 42 | oss << std::setfill('0') << std::hex; |
| 43 | 43 | ||
| @@ -60,7 +60,7 @@ std::string StringFromBuffer(const std::vector<u8>& data) { | |||
| 60 | 60 | ||
| 61 | // Turns " hej " into "hej". Also handles tabs. | 61 | // Turns " hej " into "hej". Also handles tabs. |
| 62 | std::string StripSpaces(const std::string& str) { | 62 | std::string StripSpaces(const std::string& str) { |
| 63 | const size_t s = str.find_first_not_of(" \t\r\n"); | 63 | const std::size_t s = str.find_first_not_of(" \t\r\n"); |
| 64 | 64 | ||
| 65 | if (str.npos != s) | 65 | if (str.npos != s) |
| 66 | return str.substr(s, str.find_last_not_of(" \t\r\n") - s + 1); | 66 | return str.substr(s, str.find_last_not_of(" \t\r\n") - s + 1); |
| @@ -121,10 +121,10 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _ | |||
| 121 | if (full_path.empty()) | 121 | if (full_path.empty()) |
| 122 | return false; | 122 | return false; |
| 123 | 123 | ||
| 124 | size_t dir_end = full_path.find_last_of("/" | 124 | std::size_t dir_end = full_path.find_last_of("/" |
| 125 | // windows needs the : included for something like just "C:" to be considered a directory | 125 | // windows needs the : included for something like just "C:" to be considered a directory |
| 126 | #ifdef _WIN32 | 126 | #ifdef _WIN32 |
| 127 | "\\:" | 127 | "\\:" |
| 128 | #endif | 128 | #endif |
| 129 | ); | 129 | ); |
| 130 | if (std::string::npos == dir_end) | 130 | if (std::string::npos == dir_end) |
| @@ -132,7 +132,7 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _ | |||
| 132 | else | 132 | else |
| 133 | dir_end += 1; | 133 | dir_end += 1; |
| 134 | 134 | ||
| 135 | size_t fname_end = full_path.rfind('.'); | 135 | std::size_t fname_end = full_path.rfind('.'); |
| 136 | if (fname_end < dir_end || std::string::npos == fname_end) | 136 | if (fname_end < dir_end || std::string::npos == fname_end) |
| 137 | fname_end = full_path.size(); | 137 | fname_end = full_path.size(); |
| 138 | 138 | ||
| @@ -172,7 +172,7 @@ void SplitString(const std::string& str, const char delim, std::vector<std::stri | |||
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | std::string TabsToSpaces(int tab_size, std::string in) { | 174 | std::string TabsToSpaces(int tab_size, std::string in) { |
| 175 | size_t i = 0; | 175 | std::size_t i = 0; |
| 176 | 176 | ||
| 177 | while ((i = in.find('\t')) != std::string::npos) { | 177 | while ((i = in.find('\t')) != std::string::npos) { |
| 178 | in.replace(i, 1, tab_size, ' '); | 178 | in.replace(i, 1, tab_size, ' '); |
| @@ -182,7 +182,7 @@ std::string TabsToSpaces(int tab_size, std::string in) { | |||
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | std::string ReplaceAll(std::string result, const std::string& src, const std::string& dest) { | 184 | std::string ReplaceAll(std::string result, const std::string& src, const std::string& dest) { |
| 185 | size_t pos = 0; | 185 | std::size_t pos = 0; |
| 186 | 186 | ||
| 187 | if (src == dest) | 187 | if (src == dest) |
| 188 | return result; | 188 | return result; |
| @@ -280,22 +280,22 @@ static std::string CodeToUTF8(const char* fromcode, const std::basic_string<T>& | |||
| 280 | return {}; | 280 | return {}; |
| 281 | } | 281 | } |
| 282 | 282 | ||
| 283 | const size_t in_bytes = sizeof(T) * input.size(); | 283 | const std::size_t in_bytes = sizeof(T) * input.size(); |
| 284 | // Multiply by 4, which is the max number of bytes to encode a codepoint | 284 | // Multiply by 4, which is the max number of bytes to encode a codepoint |
| 285 | const size_t out_buffer_size = 4 * in_bytes; | 285 | const std::size_t out_buffer_size = 4 * in_bytes; |
| 286 | 286 | ||
| 287 | std::string out_buffer(out_buffer_size, '\0'); | 287 | std::string out_buffer(out_buffer_size, '\0'); |
| 288 | 288 | ||
| 289 | auto src_buffer = &input[0]; | 289 | auto src_buffer = &input[0]; |
| 290 | size_t src_bytes = in_bytes; | 290 | std::size_t src_bytes = in_bytes; |
| 291 | auto dst_buffer = &out_buffer[0]; | 291 | auto dst_buffer = &out_buffer[0]; |
| 292 | size_t dst_bytes = out_buffer.size(); | 292 | std::size_t dst_bytes = out_buffer.size(); |
| 293 | 293 | ||
| 294 | while (0 != src_bytes) { | 294 | while (0 != src_bytes) { |
| 295 | size_t const iconv_result = | 295 | std::size_t const iconv_result = |
| 296 | iconv(conv_desc, (char**)(&src_buffer), &src_bytes, &dst_buffer, &dst_bytes); | 296 | iconv(conv_desc, (char**)(&src_buffer), &src_bytes, &dst_buffer, &dst_bytes); |
| 297 | 297 | ||
| 298 | if (static_cast<size_t>(-1) == iconv_result) { | 298 | if (static_cast<std::size_t>(-1) == iconv_result) { |
| 299 | if (EILSEQ == errno || EINVAL == errno) { | 299 | if (EILSEQ == errno || EINVAL == errno) { |
| 300 | // Try to skip the bad character | 300 | // Try to skip the bad character |
| 301 | if (0 != src_bytes) { | 301 | if (0 != src_bytes) { |
| @@ -326,22 +326,22 @@ std::u16string UTF8ToUTF16(const std::string& input) { | |||
| 326 | return {}; | 326 | return {}; |
| 327 | } | 327 | } |
| 328 | 328 | ||
| 329 | const size_t in_bytes = sizeof(char) * input.size(); | 329 | const std::size_t in_bytes = sizeof(char) * input.size(); |
| 330 | // Multiply by 4, which is the max number of bytes to encode a codepoint | 330 | // Multiply by 4, which is the max number of bytes to encode a codepoint |
| 331 | const size_t out_buffer_size = 4 * sizeof(char16_t) * in_bytes; | 331 | const std::size_t out_buffer_size = 4 * sizeof(char16_t) * in_bytes; |
| 332 | 332 | ||
| 333 | std::u16string out_buffer(out_buffer_size, char16_t{}); | 333 | std::u16string out_buffer(out_buffer_size, char16_t{}); |
| 334 | 334 | ||
| 335 | char* src_buffer = const_cast<char*>(&input[0]); | 335 | char* src_buffer = const_cast<char*>(&input[0]); |
| 336 | size_t src_bytes = in_bytes; | 336 | std::size_t src_bytes = in_bytes; |
| 337 | char* dst_buffer = (char*)(&out_buffer[0]); | 337 | char* dst_buffer = (char*)(&out_buffer[0]); |
| 338 | size_t dst_bytes = out_buffer.size(); | 338 | std::size_t dst_bytes = out_buffer.size(); |
| 339 | 339 | ||
| 340 | while (0 != src_bytes) { | 340 | while (0 != src_bytes) { |
| 341 | size_t const iconv_result = | 341 | std::size_t const iconv_result = |
| 342 | iconv(conv_desc, &src_buffer, &src_bytes, &dst_buffer, &dst_bytes); | 342 | iconv(conv_desc, &src_buffer, &src_bytes, &dst_buffer, &dst_bytes); |
| 343 | 343 | ||
| 344 | if (static_cast<size_t>(-1) == iconv_result) { | 344 | if (static_cast<std::size_t>(-1) == iconv_result) { |
| 345 | if (EILSEQ == errno || EINVAL == errno) { | 345 | if (EILSEQ == errno || EINVAL == errno) { |
| 346 | // Try to skip the bad character | 346 | // Try to skip the bad character |
| 347 | if (0 != src_bytes) { | 347 | if (0 != src_bytes) { |
| @@ -381,8 +381,8 @@ std::string SHIFTJISToUTF8(const std::string& input) { | |||
| 381 | 381 | ||
| 382 | #endif | 382 | #endif |
| 383 | 383 | ||
| 384 | std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, size_t max_len) { | 384 | std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, std::size_t max_len) { |
| 385 | size_t len = 0; | 385 | std::size_t len = 0; |
| 386 | while (len < max_len && buffer[len] != '\0') | 386 | while (len < max_len && buffer[len] != '\0') |
| 387 | ++len; | 387 | ++len; |
| 388 | 388 | ||
diff --git a/src/common/string_util.h b/src/common/string_util.h index 4a2143b59..dcca6bc38 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h | |||
| @@ -19,7 +19,7 @@ std::string ToLower(std::string str); | |||
| 19 | /// Make a string uppercase | 19 | /// Make a string uppercase |
| 20 | std::string ToUpper(std::string str); | 20 | std::string ToUpper(std::string str); |
| 21 | 21 | ||
| 22 | std::string ArrayToString(const u8* data, size_t size, int line_len = 20, bool spaces = true); | 22 | std::string ArrayToString(const u8* data, std::size_t size, int line_len = 20, bool spaces = true); |
| 23 | 23 | ||
| 24 | std::string StringFromBuffer(const std::vector<u8>& data); | 24 | std::string StringFromBuffer(const std::vector<u8>& data); |
| 25 | 25 | ||
| @@ -118,7 +118,7 @@ bool ComparePartialString(InIt begin, InIt end, const char* other) { | |||
| 118 | * Creates a std::string from a fixed-size NUL-terminated char buffer. If the buffer isn't | 118 | * Creates a std::string from a fixed-size NUL-terminated char buffer. If the buffer isn't |
| 119 | * NUL-terminated then the string ends at max_len characters. | 119 | * NUL-terminated then the string ends at max_len characters. |
| 120 | */ | 120 | */ |
| 121 | std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, size_t max_len); | 121 | std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, std::size_t max_len); |
| 122 | 122 | ||
| 123 | /** | 123 | /** |
| 124 | * Attempts to trim an arbitrary prefix from `path`, leaving only the part starting at `root`. It's | 124 | * Attempts to trim an arbitrary prefix from `path`, leaving only the part starting at `root`. It's |
diff --git a/src/common/thread.h b/src/common/thread.h index 9465e1de7..12a1c095c 100644 --- a/src/common/thread.h +++ b/src/common/thread.h | |||
| @@ -60,12 +60,12 @@ private: | |||
| 60 | 60 | ||
| 61 | class Barrier { | 61 | class Barrier { |
| 62 | public: | 62 | public: |
| 63 | explicit Barrier(size_t count_) : count(count_), waiting(0), generation(0) {} | 63 | explicit Barrier(std::size_t count_) : count(count_), waiting(0), generation(0) {} |
| 64 | 64 | ||
| 65 | /// Blocks until all "count" threads have called Sync() | 65 | /// Blocks until all "count" threads have called Sync() |
| 66 | void Sync() { | 66 | void Sync() { |
| 67 | std::unique_lock<std::mutex> lk(mutex); | 67 | std::unique_lock<std::mutex> lk(mutex); |
| 68 | const size_t current_generation = generation; | 68 | const std::size_t current_generation = generation; |
| 69 | 69 | ||
| 70 | if (++waiting == count) { | 70 | if (++waiting == count) { |
| 71 | generation++; | 71 | generation++; |
| @@ -80,9 +80,9 @@ public: | |||
| 80 | private: | 80 | private: |
| 81 | std::condition_variable condvar; | 81 | std::condition_variable condvar; |
| 82 | std::mutex mutex; | 82 | std::mutex mutex; |
| 83 | const size_t count; | 83 | const std::size_t count; |
| 84 | size_t waiting; | 84 | std::size_t waiting; |
| 85 | size_t generation; // Incremented once each time the barrier is used | 85 | std::size_t generation; // Incremented once each time the barrier is used |
| 86 | }; | 86 | }; |
| 87 | 87 | ||
| 88 | void SleepCurrentThread(int ms); | 88 | void SleepCurrentThread(int ms); |
diff --git a/src/common/x64/xbyak_abi.h b/src/common/x64/xbyak_abi.h index 927da9187..636a5c0f9 100644 --- a/src/common/x64/xbyak_abi.h +++ b/src/common/x64/xbyak_abi.h | |||
| @@ -97,7 +97,7 @@ const BitSet32 ABI_ALL_CALLEE_SAVED = BuildRegSet({ | |||
| 97 | Xbyak::util::xmm15, | 97 | Xbyak::util::xmm15, |
| 98 | }); | 98 | }); |
| 99 | 99 | ||
| 100 | constexpr size_t ABI_SHADOW_SPACE = 0x20; | 100 | constexpr std::size_t ABI_SHADOW_SPACE = 0x20; |
| 101 | 101 | ||
| 102 | #else | 102 | #else |
| 103 | 103 | ||
| @@ -147,22 +147,23 @@ const BitSet32 ABI_ALL_CALLEE_SAVED = BuildRegSet({ | |||
| 147 | Xbyak::util::r15, | 147 | Xbyak::util::r15, |
| 148 | }); | 148 | }); |
| 149 | 149 | ||
| 150 | constexpr size_t ABI_SHADOW_SPACE = 0; | 150 | constexpr std::size_t ABI_SHADOW_SPACE = 0; |
| 151 | 151 | ||
| 152 | #endif | 152 | #endif |
| 153 | 153 | ||
| 154 | inline void ABI_CalculateFrameSize(BitSet32 regs, size_t rsp_alignment, size_t needed_frame_size, | 154 | inline void ABI_CalculateFrameSize(BitSet32 regs, std::size_t rsp_alignment, |
| 155 | s32* out_subtraction, s32* out_xmm_offset) { | 155 | std::size_t needed_frame_size, s32* out_subtraction, |
| 156 | s32* out_xmm_offset) { | ||
| 156 | int count = (regs & ABI_ALL_GPRS).Count(); | 157 | int count = (regs & ABI_ALL_GPRS).Count(); |
| 157 | rsp_alignment -= count * 8; | 158 | rsp_alignment -= count * 8; |
| 158 | size_t subtraction = 0; | 159 | std::size_t subtraction = 0; |
| 159 | int xmm_count = (regs & ABI_ALL_XMMS).Count(); | 160 | int xmm_count = (regs & ABI_ALL_XMMS).Count(); |
| 160 | if (xmm_count) { | 161 | if (xmm_count) { |
| 161 | // If we have any XMMs to save, we must align the stack here. | 162 | // If we have any XMMs to save, we must align the stack here. |
| 162 | subtraction = rsp_alignment & 0xF; | 163 | subtraction = rsp_alignment & 0xF; |
| 163 | } | 164 | } |
| 164 | subtraction += 0x10 * xmm_count; | 165 | subtraction += 0x10 * xmm_count; |
| 165 | size_t xmm_base_subtraction = subtraction; | 166 | std::size_t xmm_base_subtraction = subtraction; |
| 166 | subtraction += needed_frame_size; | 167 | subtraction += needed_frame_size; |
| 167 | subtraction += ABI_SHADOW_SPACE; | 168 | subtraction += ABI_SHADOW_SPACE; |
| 168 | // Final alignment. | 169 | // Final alignment. |
| @@ -173,8 +174,9 @@ inline void ABI_CalculateFrameSize(BitSet32 regs, size_t rsp_alignment, size_t n | |||
| 173 | *out_xmm_offset = (s32)(subtraction - xmm_base_subtraction); | 174 | *out_xmm_offset = (s32)(subtraction - xmm_base_subtraction); |
| 174 | } | 175 | } |
| 175 | 176 | ||
| 176 | inline size_t ABI_PushRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs, | 177 | inline std::size_t ABI_PushRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs, |
| 177 | size_t rsp_alignment, size_t needed_frame_size = 0) { | 178 | std::size_t rsp_alignment, |
| 179 | std::size_t needed_frame_size = 0) { | ||
| 178 | s32 subtraction, xmm_offset; | 180 | s32 subtraction, xmm_offset; |
| 179 | ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); | 181 | ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); |
| 180 | 182 | ||
| @@ -195,7 +197,8 @@ inline size_t ABI_PushRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet | |||
| 195 | } | 197 | } |
| 196 | 198 | ||
| 197 | inline void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs, | 199 | inline void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, BitSet32 regs, |
| 198 | size_t rsp_alignment, size_t needed_frame_size = 0) { | 200 | std::size_t rsp_alignment, |
| 201 | std::size_t needed_frame_size = 0) { | ||
| 199 | s32 subtraction, xmm_offset; | 202 | s32 subtraction, xmm_offset; |
| 200 | ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); | 203 | ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); |
| 201 | 204 | ||
diff --git a/src/common/x64/xbyak_util.h b/src/common/x64/xbyak_util.h index 02323a017..5cc8a8c76 100644 --- a/src/common/x64/xbyak_util.h +++ b/src/common/x64/xbyak_util.h | |||
| @@ -34,7 +34,7 @@ inline bool IsWithin2G(const Xbyak::CodeGenerator& code, uintptr_t target) { | |||
| 34 | template <typename T> | 34 | template <typename T> |
| 35 | inline void CallFarFunction(Xbyak::CodeGenerator& code, const T f) { | 35 | inline void CallFarFunction(Xbyak::CodeGenerator& code, const T f) { |
| 36 | static_assert(std::is_pointer_v<T>, "Argument must be a (function) pointer."); | 36 | static_assert(std::is_pointer_v<T>, "Argument must be a (function) pointer."); |
| 37 | size_t addr = reinterpret_cast<size_t>(f); | 37 | std::size_t addr = reinterpret_cast<std::size_t>(f); |
| 38 | if (IsWithin2G(code, addr)) { | 38 | if (IsWithin2G(code, addr)) { |
| 39 | code.call(f); | 39 | code.call(f); |
| 40 | } else { | 40 | } else { |
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h index c368745b1..0b2af2a9b 100644 --- a/src/core/arm/arm_interface.h +++ b/src/core/arm/arm_interface.h | |||
| @@ -31,11 +31,11 @@ public: | |||
| 31 | virtual void Step() = 0; | 31 | virtual void Step() = 0; |
| 32 | 32 | ||
| 33 | /// Maps a backing memory region for the CPU | 33 | /// Maps a backing memory region for the CPU |
| 34 | virtual void MapBackingMemory(VAddr address, size_t size, u8* memory, | 34 | virtual void MapBackingMemory(VAddr address, std::size_t size, u8* memory, |
| 35 | Kernel::VMAPermission perms) = 0; | 35 | Kernel::VMAPermission perms) = 0; |
| 36 | 36 | ||
| 37 | /// Unmaps a region of memory that was previously mapped using MapBackingMemory | 37 | /// Unmaps a region of memory that was previously mapped using MapBackingMemory |
| 38 | virtual void UnmapMemory(VAddr address, size_t size) = 0; | 38 | virtual void UnmapMemory(VAddr address, std::size_t size) = 0; |
| 39 | 39 | ||
| 40 | /// Clear all instruction cache | 40 | /// Clear all instruction cache |
| 41 | virtual void ClearInstructionCache() = 0; | 41 | virtual void ClearInstructionCache() = 0; |
diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index b47f04988..0c175d872 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp | |||
| @@ -58,7 +58,7 @@ public: | |||
| 58 | Memory::Write64(vaddr + 8, value[1]); | 58 | Memory::Write64(vaddr + 8, value[1]); |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | void InterpreterFallback(u64 pc, size_t num_instructions) override { | 61 | void InterpreterFallback(u64 pc, std::size_t num_instructions) override { |
| 62 | LOG_INFO(Core_ARM, "Unicorn fallback @ 0x{:X} for {} instructions (instr = {:08X})", pc, | 62 | LOG_INFO(Core_ARM, "Unicorn fallback @ 0x{:X} for {} instructions (instr = {:08X})", pc, |
| 63 | num_instructions, MemoryReadCode(pc)); | 63 | num_instructions, MemoryReadCode(pc)); |
| 64 | 64 | ||
| @@ -81,7 +81,7 @@ public: | |||
| 81 | return; | 81 | return; |
| 82 | default: | 82 | default: |
| 83 | ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:X})", | 83 | ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:X})", |
| 84 | static_cast<size_t>(exception), pc); | 84 | static_cast<std::size_t>(exception), pc); |
| 85 | } | 85 | } |
| 86 | } | 86 | } |
| 87 | 87 | ||
| @@ -110,7 +110,7 @@ public: | |||
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | ARM_Dynarmic& parent; | 112 | ARM_Dynarmic& parent; |
| 113 | size_t num_interpreted_instructions = 0; | 113 | std::size_t num_interpreted_instructions = 0; |
| 114 | u64 tpidrro_el0 = 0; | 114 | u64 tpidrro_el0 = 0; |
| 115 | u64 tpidr_el0 = 0; | 115 | u64 tpidr_el0 = 0; |
| 116 | }; | 116 | }; |
| @@ -157,7 +157,8 @@ void ARM_Dynarmic::Step() { | |||
| 157 | cb->InterpreterFallback(jit->GetPC(), 1); | 157 | cb->InterpreterFallback(jit->GetPC(), 1); |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | ARM_Dynarmic::ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, size_t core_index) | 160 | ARM_Dynarmic::ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, |
| 161 | std::size_t core_index) | ||
| 161 | : cb(std::make_unique<ARM_Dynarmic_Callbacks>(*this)), core_index{core_index}, | 162 | : cb(std::make_unique<ARM_Dynarmic_Callbacks>(*this)), core_index{core_index}, |
| 162 | exclusive_monitor{std::dynamic_pointer_cast<DynarmicExclusiveMonitor>(exclusive_monitor)} { | 163 | exclusive_monitor{std::dynamic_pointer_cast<DynarmicExclusiveMonitor>(exclusive_monitor)} { |
| 163 | ThreadContext ctx; | 164 | ThreadContext ctx; |
| @@ -168,12 +169,12 @@ ARM_Dynarmic::ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, | |||
| 168 | 169 | ||
| 169 | ARM_Dynarmic::~ARM_Dynarmic() = default; | 170 | ARM_Dynarmic::~ARM_Dynarmic() = default; |
| 170 | 171 | ||
| 171 | void ARM_Dynarmic::MapBackingMemory(u64 address, size_t size, u8* memory, | 172 | void ARM_Dynarmic::MapBackingMemory(u64 address, std::size_t size, u8* memory, |
| 172 | Kernel::VMAPermission perms) { | 173 | Kernel::VMAPermission perms) { |
| 173 | inner_unicorn.MapBackingMemory(address, size, memory, perms); | 174 | inner_unicorn.MapBackingMemory(address, size, memory, perms); |
| 174 | } | 175 | } |
| 175 | 176 | ||
| 176 | void ARM_Dynarmic::UnmapMemory(u64 address, size_t size) { | 177 | void ARM_Dynarmic::UnmapMemory(u64 address, std::size_t size) { |
| 177 | inner_unicorn.UnmapMemory(address, size); | 178 | inner_unicorn.UnmapMemory(address, size); |
| 178 | } | 179 | } |
| 179 | 180 | ||
| @@ -269,10 +270,10 @@ void ARM_Dynarmic::PageTableChanged() { | |||
| 269 | current_page_table = Memory::GetCurrentPageTable(); | 270 | current_page_table = Memory::GetCurrentPageTable(); |
| 270 | } | 271 | } |
| 271 | 272 | ||
| 272 | DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(size_t core_count) : monitor(core_count) {} | 273 | DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(std::size_t core_count) : monitor(core_count) {} |
| 273 | DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default; | 274 | DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default; |
| 274 | 275 | ||
| 275 | void DynarmicExclusiveMonitor::SetExclusive(size_t core_index, VAddr addr) { | 276 | void DynarmicExclusiveMonitor::SetExclusive(std::size_t core_index, VAddr addr) { |
| 276 | // Size doesn't actually matter. | 277 | // Size doesn't actually matter. |
| 277 | monitor.Mark(core_index, addr, 16); | 278 | monitor.Mark(core_index, addr, 16); |
| 278 | } | 279 | } |
| @@ -281,27 +282,27 @@ void DynarmicExclusiveMonitor::ClearExclusive() { | |||
| 281 | monitor.Clear(); | 282 | monitor.Clear(); |
| 282 | } | 283 | } |
| 283 | 284 | ||
| 284 | bool DynarmicExclusiveMonitor::ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) { | 285 | bool DynarmicExclusiveMonitor::ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) { |
| 285 | return monitor.DoExclusiveOperation(core_index, vaddr, 1, | 286 | return monitor.DoExclusiveOperation(core_index, vaddr, 1, |
| 286 | [&] { Memory::Write8(vaddr, value); }); | 287 | [&] { Memory::Write8(vaddr, value); }); |
| 287 | } | 288 | } |
| 288 | 289 | ||
| 289 | bool DynarmicExclusiveMonitor::ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) { | 290 | bool DynarmicExclusiveMonitor::ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) { |
| 290 | return monitor.DoExclusiveOperation(core_index, vaddr, 2, | 291 | return monitor.DoExclusiveOperation(core_index, vaddr, 2, |
| 291 | [&] { Memory::Write16(vaddr, value); }); | 292 | [&] { Memory::Write16(vaddr, value); }); |
| 292 | } | 293 | } |
| 293 | 294 | ||
| 294 | bool DynarmicExclusiveMonitor::ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) { | 295 | bool DynarmicExclusiveMonitor::ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) { |
| 295 | return monitor.DoExclusiveOperation(core_index, vaddr, 4, | 296 | return monitor.DoExclusiveOperation(core_index, vaddr, 4, |
| 296 | [&] { Memory::Write32(vaddr, value); }); | 297 | [&] { Memory::Write32(vaddr, value); }); |
| 297 | } | 298 | } |
| 298 | 299 | ||
| 299 | bool DynarmicExclusiveMonitor::ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) { | 300 | bool DynarmicExclusiveMonitor::ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) { |
| 300 | return monitor.DoExclusiveOperation(core_index, vaddr, 8, | 301 | return monitor.DoExclusiveOperation(core_index, vaddr, 8, |
| 301 | [&] { Memory::Write64(vaddr, value); }); | 302 | [&] { Memory::Write64(vaddr, value); }); |
| 302 | } | 303 | } |
| 303 | 304 | ||
| 304 | bool DynarmicExclusiveMonitor::ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) { | 305 | bool DynarmicExclusiveMonitor::ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) { |
| 305 | return monitor.DoExclusiveOperation(core_index, vaddr, 16, [&] { | 306 | return monitor.DoExclusiveOperation(core_index, vaddr, 16, [&] { |
| 306 | Memory::Write64(vaddr, value[0]); | 307 | Memory::Write64(vaddr, value[0]); |
| 307 | Memory::Write64(vaddr, value[1]); | 308 | Memory::Write64(vaddr, value[1]); |
diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h index 3bdfd8cd9..56c60c853 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.h +++ b/src/core/arm/dynarmic/arm_dynarmic.h | |||
| @@ -19,12 +19,12 @@ class DynarmicExclusiveMonitor; | |||
| 19 | 19 | ||
| 20 | class ARM_Dynarmic final : public ARM_Interface { | 20 | class ARM_Dynarmic final : public ARM_Interface { |
| 21 | public: | 21 | public: |
| 22 | ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, size_t core_index); | 22 | ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, std::size_t core_index); |
| 23 | ~ARM_Dynarmic(); | 23 | ~ARM_Dynarmic(); |
| 24 | 24 | ||
| 25 | void MapBackingMemory(VAddr address, size_t size, u8* memory, | 25 | void MapBackingMemory(VAddr address, std::size_t size, u8* memory, |
| 26 | Kernel::VMAPermission perms) override; | 26 | Kernel::VMAPermission perms) override; |
| 27 | void UnmapMemory(u64 address, size_t size) override; | 27 | void UnmapMemory(u64 address, std::size_t size) override; |
| 28 | void SetPC(u64 pc) override; | 28 | void SetPC(u64 pc) override; |
| 29 | u64 GetPC() const override; | 29 | u64 GetPC() const override; |
| 30 | u64 GetReg(int index) const override; | 30 | u64 GetReg(int index) const override; |
| @@ -59,7 +59,7 @@ private: | |||
| 59 | std::unique_ptr<Dynarmic::A64::Jit> jit; | 59 | std::unique_ptr<Dynarmic::A64::Jit> jit; |
| 60 | ARM_Unicorn inner_unicorn; | 60 | ARM_Unicorn inner_unicorn; |
| 61 | 61 | ||
| 62 | size_t core_index; | 62 | std::size_t core_index; |
| 63 | std::shared_ptr<DynarmicExclusiveMonitor> exclusive_monitor; | 63 | std::shared_ptr<DynarmicExclusiveMonitor> exclusive_monitor; |
| 64 | 64 | ||
| 65 | Memory::PageTable* current_page_table = nullptr; | 65 | Memory::PageTable* current_page_table = nullptr; |
| @@ -67,17 +67,17 @@ private: | |||
| 67 | 67 | ||
| 68 | class DynarmicExclusiveMonitor final : public ExclusiveMonitor { | 68 | class DynarmicExclusiveMonitor final : public ExclusiveMonitor { |
| 69 | public: | 69 | public: |
| 70 | explicit DynarmicExclusiveMonitor(size_t core_count); | 70 | explicit DynarmicExclusiveMonitor(std::size_t core_count); |
| 71 | ~DynarmicExclusiveMonitor(); | 71 | ~DynarmicExclusiveMonitor(); |
| 72 | 72 | ||
| 73 | void SetExclusive(size_t core_index, VAddr addr) override; | 73 | void SetExclusive(std::size_t core_index, VAddr addr) override; |
| 74 | void ClearExclusive() override; | 74 | void ClearExclusive() override; |
| 75 | 75 | ||
| 76 | bool ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) override; | 76 | bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) override; |
| 77 | bool ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) override; | 77 | bool ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) override; |
| 78 | bool ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) override; | 78 | bool ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) override; |
| 79 | bool ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) override; | 79 | bool ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) override; |
| 80 | bool ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) override; | 80 | bool ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) override; |
| 81 | 81 | ||
| 82 | private: | 82 | private: |
| 83 | friend class ARM_Dynarmic; | 83 | friend class ARM_Dynarmic; |
diff --git a/src/core/arm/exclusive_monitor.h b/src/core/arm/exclusive_monitor.h index 6f9b51573..f59aca667 100644 --- a/src/core/arm/exclusive_monitor.h +++ b/src/core/arm/exclusive_monitor.h | |||
| @@ -12,14 +12,14 @@ class ExclusiveMonitor { | |||
| 12 | public: | 12 | public: |
| 13 | virtual ~ExclusiveMonitor(); | 13 | virtual ~ExclusiveMonitor(); |
| 14 | 14 | ||
| 15 | virtual void SetExclusive(size_t core_index, VAddr addr) = 0; | 15 | virtual void SetExclusive(std::size_t core_index, VAddr addr) = 0; |
| 16 | virtual void ClearExclusive() = 0; | 16 | virtual void ClearExclusive() = 0; |
| 17 | 17 | ||
| 18 | virtual bool ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) = 0; | 18 | virtual bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) = 0; |
| 19 | virtual bool ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) = 0; | 19 | virtual bool ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) = 0; |
| 20 | virtual bool ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) = 0; | 20 | virtual bool ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) = 0; |
| 21 | virtual bool ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) = 0; | 21 | virtual bool ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) = 0; |
| 22 | virtual bool ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) = 0; | 22 | virtual bool ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) = 0; |
| 23 | }; | 23 | }; |
| 24 | 24 | ||
| 25 | } // namespace Core | 25 | } // namespace Core |
diff --git a/src/core/arm/unicorn/arm_unicorn.cpp b/src/core/arm/unicorn/arm_unicorn.cpp index 4c4de2623..4e02b7cd4 100644 --- a/src/core/arm/unicorn/arm_unicorn.cpp +++ b/src/core/arm/unicorn/arm_unicorn.cpp | |||
| @@ -90,12 +90,12 @@ ARM_Unicorn::~ARM_Unicorn() { | |||
| 90 | CHECKED(uc_close(uc)); | 90 | CHECKED(uc_close(uc)); |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | void ARM_Unicorn::MapBackingMemory(VAddr address, size_t size, u8* memory, | 93 | void ARM_Unicorn::MapBackingMemory(VAddr address, std::size_t size, u8* memory, |
| 94 | Kernel::VMAPermission perms) { | 94 | Kernel::VMAPermission perms) { |
| 95 | CHECKED(uc_mem_map_ptr(uc, address, size, static_cast<u32>(perms), memory)); | 95 | CHECKED(uc_mem_map_ptr(uc, address, size, static_cast<u32>(perms), memory)); |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | void ARM_Unicorn::UnmapMemory(VAddr address, size_t size) { | 98 | void ARM_Unicorn::UnmapMemory(VAddr address, std::size_t size) { |
| 99 | CHECKED(uc_mem_unmap(uc, address, size)); | 99 | CHECKED(uc_mem_unmap(uc, address, size)); |
| 100 | } | 100 | } |
| 101 | 101 | ||
diff --git a/src/core/arm/unicorn/arm_unicorn.h b/src/core/arm/unicorn/arm_unicorn.h index bd6b2f723..d6f7cf4ab 100644 --- a/src/core/arm/unicorn/arm_unicorn.h +++ b/src/core/arm/unicorn/arm_unicorn.h | |||
| @@ -15,9 +15,9 @@ class ARM_Unicorn final : public ARM_Interface { | |||
| 15 | public: | 15 | public: |
| 16 | ARM_Unicorn(); | 16 | ARM_Unicorn(); |
| 17 | ~ARM_Unicorn(); | 17 | ~ARM_Unicorn(); |
| 18 | void MapBackingMemory(VAddr address, size_t size, u8* memory, | 18 | void MapBackingMemory(VAddr address, std::size_t size, u8* memory, |
| 19 | Kernel::VMAPermission perms) override; | 19 | Kernel::VMAPermission perms) override; |
| 20 | void UnmapMemory(VAddr address, size_t size) override; | 20 | void UnmapMemory(VAddr address, std::size_t size) override; |
| 21 | void SetPC(u64 pc) override; | 21 | void SetPC(u64 pc) override; |
| 22 | u64 GetPC() const override; | 22 | u64 GetPC() const override; |
| 23 | u64 GetReg(int index) const override; | 23 | u64 GetReg(int index) const override; |
diff --git a/src/core/core.cpp b/src/core/core.cpp index 713ee17c1..50f0a42fb 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -140,7 +140,7 @@ struct System::Impl { | |||
| 140 | 140 | ||
| 141 | cpu_barrier = std::make_shared<CpuBarrier>(); | 141 | cpu_barrier = std::make_shared<CpuBarrier>(); |
| 142 | cpu_exclusive_monitor = Cpu::MakeExclusiveMonitor(cpu_cores.size()); | 142 | cpu_exclusive_monitor = Cpu::MakeExclusiveMonitor(cpu_cores.size()); |
| 143 | for (size_t index = 0; index < cpu_cores.size(); ++index) { | 143 | for (std::size_t index = 0; index < cpu_cores.size(); ++index) { |
| 144 | cpu_cores[index] = std::make_shared<Cpu>(cpu_exclusive_monitor, cpu_barrier, index); | 144 | cpu_cores[index] = std::make_shared<Cpu>(cpu_exclusive_monitor, cpu_barrier, index); |
| 145 | } | 145 | } |
| 146 | 146 | ||
| @@ -161,7 +161,7 @@ struct System::Impl { | |||
| 161 | // CPU core 0 is run on the main thread | 161 | // CPU core 0 is run on the main thread |
| 162 | thread_to_cpu[std::this_thread::get_id()] = cpu_cores[0]; | 162 | thread_to_cpu[std::this_thread::get_id()] = cpu_cores[0]; |
| 163 | if (Settings::values.use_multi_core) { | 163 | if (Settings::values.use_multi_core) { |
| 164 | for (size_t index = 0; index < cpu_core_threads.size(); ++index) { | 164 | for (std::size_t index = 0; index < cpu_core_threads.size(); ++index) { |
| 165 | cpu_core_threads[index] = | 165 | cpu_core_threads[index] = |
| 166 | std::make_unique<std::thread>(RunCpuCore, cpu_cores[index + 1]); | 166 | std::make_unique<std::thread>(RunCpuCore, cpu_cores[index + 1]); |
| 167 | thread_to_cpu[cpu_core_threads[index]->get_id()] = cpu_cores[index + 1]; | 167 | thread_to_cpu[cpu_core_threads[index]->get_id()] = cpu_cores[index + 1]; |
| @@ -285,7 +285,7 @@ struct System::Impl { | |||
| 285 | std::shared_ptr<CpuBarrier> cpu_barrier; | 285 | std::shared_ptr<CpuBarrier> cpu_barrier; |
| 286 | std::array<std::shared_ptr<Cpu>, NUM_CPU_CORES> cpu_cores; | 286 | std::array<std::shared_ptr<Cpu>, NUM_CPU_CORES> cpu_cores; |
| 287 | std::array<std::unique_ptr<std::thread>, NUM_CPU_CORES - 1> cpu_core_threads; | 287 | std::array<std::unique_ptr<std::thread>, NUM_CPU_CORES - 1> cpu_core_threads; |
| 288 | size_t active_core{}; ///< Active core, only used in single thread mode | 288 | std::size_t active_core{}; ///< Active core, only used in single thread mode |
| 289 | 289 | ||
| 290 | /// Service manager | 290 | /// Service manager |
| 291 | std::shared_ptr<Service::SM::ServiceManager> service_manager; | 291 | std::shared_ptr<Service::SM::ServiceManager> service_manager; |
| @@ -348,7 +348,7 @@ ARM_Interface& System::CurrentArmInterface() { | |||
| 348 | return CurrentCpuCore().ArmInterface(); | 348 | return CurrentCpuCore().ArmInterface(); |
| 349 | } | 349 | } |
| 350 | 350 | ||
| 351 | size_t System::CurrentCoreIndex() { | 351 | std::size_t System::CurrentCoreIndex() { |
| 352 | return CurrentCpuCore().CoreIndex(); | 352 | return CurrentCpuCore().CoreIndex(); |
| 353 | } | 353 | } |
| 354 | 354 | ||
| @@ -356,7 +356,7 @@ Kernel::Scheduler& System::CurrentScheduler() { | |||
| 356 | return *CurrentCpuCore().Scheduler(); | 356 | return *CurrentCpuCore().Scheduler(); |
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | const std::shared_ptr<Kernel::Scheduler>& System::Scheduler(size_t core_index) { | 359 | const std::shared_ptr<Kernel::Scheduler>& System::Scheduler(std::size_t core_index) { |
| 360 | ASSERT(core_index < NUM_CPU_CORES); | 360 | ASSERT(core_index < NUM_CPU_CORES); |
| 361 | return impl->cpu_cores[core_index]->Scheduler(); | 361 | return impl->cpu_cores[core_index]->Scheduler(); |
| 362 | } | 362 | } |
| @@ -369,12 +369,12 @@ const Kernel::SharedPtr<Kernel::Process>& System::CurrentProcess() const { | |||
| 369 | return impl->kernel.CurrentProcess(); | 369 | return impl->kernel.CurrentProcess(); |
| 370 | } | 370 | } |
| 371 | 371 | ||
| 372 | ARM_Interface& System::ArmInterface(size_t core_index) { | 372 | ARM_Interface& System::ArmInterface(std::size_t core_index) { |
| 373 | ASSERT(core_index < NUM_CPU_CORES); | 373 | ASSERT(core_index < NUM_CPU_CORES); |
| 374 | return impl->cpu_cores[core_index]->ArmInterface(); | 374 | return impl->cpu_cores[core_index]->ArmInterface(); |
| 375 | } | 375 | } |
| 376 | 376 | ||
| 377 | Cpu& System::CpuCore(size_t core_index) { | 377 | Cpu& System::CpuCore(std::size_t core_index) { |
| 378 | ASSERT(core_index < NUM_CPU_CORES); | 378 | ASSERT(core_index < NUM_CPU_CORES); |
| 379 | return *impl->cpu_cores[core_index]; | 379 | return *impl->cpu_cores[core_index]; |
| 380 | } | 380 | } |
diff --git a/src/core/core.h b/src/core/core.h index ab3663427..f9a3e97e3 100644 --- a/src/core/core.h +++ b/src/core/core.h | |||
| @@ -145,16 +145,16 @@ public: | |||
| 145 | ARM_Interface& CurrentArmInterface(); | 145 | ARM_Interface& CurrentArmInterface(); |
| 146 | 146 | ||
| 147 | /// Gets the index of the currently running CPU core | 147 | /// Gets the index of the currently running CPU core |
| 148 | size_t CurrentCoreIndex(); | 148 | std::size_t CurrentCoreIndex(); |
| 149 | 149 | ||
| 150 | /// Gets the scheduler for the CPU core that is currently running | 150 | /// Gets the scheduler for the CPU core that is currently running |
| 151 | Kernel::Scheduler& CurrentScheduler(); | 151 | Kernel::Scheduler& CurrentScheduler(); |
| 152 | 152 | ||
| 153 | /// Gets an ARM interface to the CPU core with the specified index | 153 | /// Gets an ARM interface to the CPU core with the specified index |
| 154 | ARM_Interface& ArmInterface(size_t core_index); | 154 | ARM_Interface& ArmInterface(std::size_t core_index); |
| 155 | 155 | ||
| 156 | /// Gets a CPU interface to the CPU core with the specified index | 156 | /// Gets a CPU interface to the CPU core with the specified index |
| 157 | Cpu& CpuCore(size_t core_index); | 157 | Cpu& CpuCore(std::size_t core_index); |
| 158 | 158 | ||
| 159 | /// Gets the exclusive monitor | 159 | /// Gets the exclusive monitor |
| 160 | ExclusiveMonitor& Monitor(); | 160 | ExclusiveMonitor& Monitor(); |
| @@ -172,7 +172,7 @@ public: | |||
| 172 | const VideoCore::RendererBase& Renderer() const; | 172 | const VideoCore::RendererBase& Renderer() const; |
| 173 | 173 | ||
| 174 | /// Gets the scheduler for the CPU core with the specified index | 174 | /// Gets the scheduler for the CPU core with the specified index |
| 175 | const std::shared_ptr<Kernel::Scheduler>& Scheduler(size_t core_index); | 175 | const std::shared_ptr<Kernel::Scheduler>& Scheduler(std::size_t core_index); |
| 176 | 176 | ||
| 177 | /// Provides a reference to the current process | 177 | /// Provides a reference to the current process |
| 178 | Kernel::SharedPtr<Kernel::Process>& CurrentProcess(); | 178 | Kernel::SharedPtr<Kernel::Process>& CurrentProcess(); |
diff --git a/src/core/core_cpu.cpp b/src/core/core_cpu.cpp index b042ee02b..15d60cc8a 100644 --- a/src/core/core_cpu.cpp +++ b/src/core/core_cpu.cpp | |||
| @@ -49,7 +49,7 @@ bool CpuBarrier::Rendezvous() { | |||
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | Cpu::Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, | 51 | Cpu::Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, |
| 52 | std::shared_ptr<CpuBarrier> cpu_barrier, size_t core_index) | 52 | std::shared_ptr<CpuBarrier> cpu_barrier, std::size_t core_index) |
| 53 | : cpu_barrier{std::move(cpu_barrier)}, core_index{core_index} { | 53 | : cpu_barrier{std::move(cpu_barrier)}, core_index{core_index} { |
| 54 | 54 | ||
| 55 | if (Settings::values.use_cpu_jit) { | 55 | if (Settings::values.use_cpu_jit) { |
| @@ -66,7 +66,7 @@ Cpu::Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, | |||
| 66 | scheduler = std::make_shared<Kernel::Scheduler>(arm_interface.get()); | 66 | scheduler = std::make_shared<Kernel::Scheduler>(arm_interface.get()); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | std::shared_ptr<ExclusiveMonitor> Cpu::MakeExclusiveMonitor(size_t num_cores) { | 69 | std::shared_ptr<ExclusiveMonitor> Cpu::MakeExclusiveMonitor(std::size_t num_cores) { |
| 70 | if (Settings::values.use_cpu_jit) { | 70 | if (Settings::values.use_cpu_jit) { |
| 71 | #ifdef ARCHITECTURE_x86_64 | 71 | #ifdef ARCHITECTURE_x86_64 |
| 72 | return std::make_shared<DynarmicExclusiveMonitor>(num_cores); | 72 | return std::make_shared<DynarmicExclusiveMonitor>(num_cores); |
diff --git a/src/core/core_cpu.h b/src/core/core_cpu.h index 40ed34b47..1d229b42f 100644 --- a/src/core/core_cpu.h +++ b/src/core/core_cpu.h | |||
| @@ -42,7 +42,7 @@ private: | |||
| 42 | class Cpu { | 42 | class Cpu { |
| 43 | public: | 43 | public: |
| 44 | Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, | 44 | Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, |
| 45 | std::shared_ptr<CpuBarrier> cpu_barrier, size_t core_index); | 45 | std::shared_ptr<CpuBarrier> cpu_barrier, std::size_t core_index); |
| 46 | 46 | ||
| 47 | void RunLoop(bool tight_loop = true); | 47 | void RunLoop(bool tight_loop = true); |
| 48 | 48 | ||
| @@ -66,11 +66,11 @@ public: | |||
| 66 | return core_index == 0; | 66 | return core_index == 0; |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | size_t CoreIndex() const { | 69 | std::size_t CoreIndex() const { |
| 70 | return core_index; | 70 | return core_index; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | static std::shared_ptr<ExclusiveMonitor> MakeExclusiveMonitor(size_t num_cores); | 73 | static std::shared_ptr<ExclusiveMonitor> MakeExclusiveMonitor(std::size_t num_cores); |
| 74 | 74 | ||
| 75 | private: | 75 | private: |
| 76 | void Reschedule(); | 76 | void Reschedule(); |
| @@ -80,7 +80,7 @@ private: | |||
| 80 | std::shared_ptr<Kernel::Scheduler> scheduler; | 80 | std::shared_ptr<Kernel::Scheduler> scheduler; |
| 81 | 81 | ||
| 82 | std::atomic<bool> reschedule_pending = false; | 82 | std::atomic<bool> reschedule_pending = false; |
| 83 | size_t core_index; | 83 | std::size_t core_index; |
| 84 | }; | 84 | }; |
| 85 | 85 | ||
| 86 | } // namespace Core | 86 | } // namespace Core |
diff --git a/src/core/crypto/aes_util.cpp b/src/core/crypto/aes_util.cpp index 89ade5000..4be76bb43 100644 --- a/src/core/crypto/aes_util.cpp +++ b/src/core/crypto/aes_util.cpp | |||
| @@ -10,9 +10,9 @@ | |||
| 10 | 10 | ||
| 11 | namespace Core::Crypto { | 11 | namespace Core::Crypto { |
| 12 | namespace { | 12 | namespace { |
| 13 | std::vector<u8> CalculateNintendoTweak(size_t sector_id) { | 13 | std::vector<u8> CalculateNintendoTweak(std::size_t sector_id) { |
| 14 | std::vector<u8> out(0x10); | 14 | std::vector<u8> out(0x10); |
| 15 | for (size_t i = 0xF; i <= 0xF; --i) { | 15 | for (std::size_t i = 0xF; i <= 0xF; --i) { |
| 16 | out[i] = sector_id & 0xFF; | 16 | out[i] = sector_id & 0xFF; |
| 17 | sector_id >>= 8; | 17 | sector_id >>= 8; |
| 18 | } | 18 | } |
| @@ -20,11 +20,14 @@ std::vector<u8> CalculateNintendoTweak(size_t sector_id) { | |||
| 20 | } | 20 | } |
| 21 | } // Anonymous namespace | 21 | } // Anonymous namespace |
| 22 | 22 | ||
| 23 | static_assert(static_cast<size_t>(Mode::CTR) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_CTR), | 23 | static_assert(static_cast<std::size_t>(Mode::CTR) == |
| 24 | static_cast<std::size_t>(MBEDTLS_CIPHER_AES_128_CTR), | ||
| 24 | "CTR has incorrect value."); | 25 | "CTR has incorrect value."); |
| 25 | static_assert(static_cast<size_t>(Mode::ECB) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_ECB), | 26 | static_assert(static_cast<std::size_t>(Mode::ECB) == |
| 27 | static_cast<std::size_t>(MBEDTLS_CIPHER_AES_128_ECB), | ||
| 26 | "ECB has incorrect value."); | 28 | "ECB has incorrect value."); |
| 27 | static_assert(static_cast<size_t>(Mode::XTS) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_XTS), | 29 | static_assert(static_cast<std::size_t>(Mode::XTS) == |
| 30 | static_cast<std::size_t>(MBEDTLS_CIPHER_AES_128_XTS), | ||
| 28 | "XTS has incorrect value."); | 31 | "XTS has incorrect value."); |
| 29 | 32 | ||
| 30 | // Structure to hide mbedtls types from header file | 33 | // Structure to hide mbedtls types from header file |
| @@ -33,7 +36,7 @@ struct CipherContext { | |||
| 33 | mbedtls_cipher_context_t decryption_context; | 36 | mbedtls_cipher_context_t decryption_context; |
| 34 | }; | 37 | }; |
| 35 | 38 | ||
| 36 | template <typename Key, size_t KeySize> | 39 | template <typename Key, std::size_t KeySize> |
| 37 | Crypto::AESCipher<Key, KeySize>::AESCipher(Key key, Mode mode) | 40 | Crypto::AESCipher<Key, KeySize>::AESCipher(Key key, Mode mode) |
| 38 | : ctx(std::make_unique<CipherContext>()) { | 41 | : ctx(std::make_unique<CipherContext>()) { |
| 39 | mbedtls_cipher_init(&ctx->encryption_context); | 42 | mbedtls_cipher_init(&ctx->encryption_context); |
| @@ -54,26 +57,26 @@ Crypto::AESCipher<Key, KeySize>::AESCipher(Key key, Mode mode) | |||
| 54 | //"Failed to set key on mbedtls ciphers."); | 57 | //"Failed to set key on mbedtls ciphers."); |
| 55 | } | 58 | } |
| 56 | 59 | ||
| 57 | template <typename Key, size_t KeySize> | 60 | template <typename Key, std::size_t KeySize> |
| 58 | AESCipher<Key, KeySize>::~AESCipher() { | 61 | AESCipher<Key, KeySize>::~AESCipher() { |
| 59 | mbedtls_cipher_free(&ctx->encryption_context); | 62 | mbedtls_cipher_free(&ctx->encryption_context); |
| 60 | mbedtls_cipher_free(&ctx->decryption_context); | 63 | mbedtls_cipher_free(&ctx->decryption_context); |
| 61 | } | 64 | } |
| 62 | 65 | ||
| 63 | template <typename Key, size_t KeySize> | 66 | template <typename Key, std::size_t KeySize> |
| 64 | void AESCipher<Key, KeySize>::SetIV(std::vector<u8> iv) { | 67 | void AESCipher<Key, KeySize>::SetIV(std::vector<u8> iv) { |
| 65 | ASSERT_MSG((mbedtls_cipher_set_iv(&ctx->encryption_context, iv.data(), iv.size()) || | 68 | ASSERT_MSG((mbedtls_cipher_set_iv(&ctx->encryption_context, iv.data(), iv.size()) || |
| 66 | mbedtls_cipher_set_iv(&ctx->decryption_context, iv.data(), iv.size())) == 0, | 69 | mbedtls_cipher_set_iv(&ctx->decryption_context, iv.data(), iv.size())) == 0, |
| 67 | "Failed to set IV on mbedtls ciphers."); | 70 | "Failed to set IV on mbedtls ciphers."); |
| 68 | } | 71 | } |
| 69 | 72 | ||
| 70 | template <typename Key, size_t KeySize> | 73 | template <typename Key, std::size_t KeySize> |
| 71 | void AESCipher<Key, KeySize>::Transcode(const u8* src, size_t size, u8* dest, Op op) const { | 74 | void AESCipher<Key, KeySize>::Transcode(const u8* src, std::size_t size, u8* dest, Op op) const { |
| 72 | auto* const context = op == Op::Encrypt ? &ctx->encryption_context : &ctx->decryption_context; | 75 | auto* const context = op == Op::Encrypt ? &ctx->encryption_context : &ctx->decryption_context; |
| 73 | 76 | ||
| 74 | mbedtls_cipher_reset(context); | 77 | mbedtls_cipher_reset(context); |
| 75 | 78 | ||
| 76 | size_t written = 0; | 79 | std::size_t written = 0; |
| 77 | if (mbedtls_cipher_get_cipher_mode(context) == MBEDTLS_MODE_XTS) { | 80 | if (mbedtls_cipher_get_cipher_mode(context) == MBEDTLS_MODE_XTS) { |
| 78 | mbedtls_cipher_update(context, src, size, dest, &written); | 81 | mbedtls_cipher_update(context, src, size, dest, &written); |
| 79 | if (written != size) { | 82 | if (written != size) { |
| @@ -90,8 +93,8 @@ void AESCipher<Key, KeySize>::Transcode(const u8* src, size_t size, u8* dest, Op | |||
| 90 | return; | 93 | return; |
| 91 | } | 94 | } |
| 92 | 95 | ||
| 93 | for (size_t offset = 0; offset < size; offset += block_size) { | 96 | for (std::size_t offset = 0; offset < size; offset += block_size) { |
| 94 | auto length = std::min<size_t>(block_size, size - offset); | 97 | auto length = std::min<std::size_t>(block_size, size - offset); |
| 95 | mbedtls_cipher_update(context, src + offset, length, dest + offset, &written); | 98 | mbedtls_cipher_update(context, src + offset, length, dest + offset, &written); |
| 96 | if (written != length) { | 99 | if (written != length) { |
| 97 | if (length < block_size) { | 100 | if (length < block_size) { |
| @@ -110,12 +113,12 @@ void AESCipher<Key, KeySize>::Transcode(const u8* src, size_t size, u8* dest, Op | |||
| 110 | mbedtls_cipher_finish(context, nullptr, nullptr); | 113 | mbedtls_cipher_finish(context, nullptr, nullptr); |
| 111 | } | 114 | } |
| 112 | 115 | ||
| 113 | template <typename Key, size_t KeySize> | 116 | template <typename Key, std::size_t KeySize> |
| 114 | void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, size_t size, u8* dest, size_t sector_id, | 117 | void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, std::size_t size, u8* dest, |
| 115 | size_t sector_size, Op op) { | 118 | std::size_t sector_id, std::size_t sector_size, Op op) { |
| 116 | ASSERT_MSG(size % sector_size == 0, "XTS decryption size must be a multiple of sector size."); | 119 | ASSERT_MSG(size % sector_size == 0, "XTS decryption size must be a multiple of sector size."); |
| 117 | 120 | ||
| 118 | for (size_t i = 0; i < size; i += sector_size) { | 121 | for (std::size_t i = 0; i < size; i += sector_size) { |
| 119 | SetIV(CalculateNintendoTweak(sector_id++)); | 122 | SetIV(CalculateNintendoTweak(sector_id++)); |
| 120 | Transcode<u8, u8>(src + i, sector_size, dest + i, op); | 123 | Transcode<u8, u8>(src + i, sector_size, dest + i, op); |
| 121 | } | 124 | } |
diff --git a/src/core/crypto/aes_util.h b/src/core/crypto/aes_util.h index 8ce9d6612..edc4ab910 100644 --- a/src/core/crypto/aes_util.h +++ b/src/core/crypto/aes_util.h | |||
| @@ -25,7 +25,7 @@ enum class Op { | |||
| 25 | Decrypt, | 25 | Decrypt, |
| 26 | }; | 26 | }; |
| 27 | 27 | ||
| 28 | template <typename Key, size_t KeySize = sizeof(Key)> | 28 | template <typename Key, std::size_t KeySize = sizeof(Key)> |
| 29 | class AESCipher { | 29 | class AESCipher { |
| 30 | static_assert(std::is_same_v<Key, std::array<u8, KeySize>>, "Key must be std::array of u8."); | 30 | static_assert(std::is_same_v<Key, std::array<u8, KeySize>>, "Key must be std::array of u8."); |
| 31 | static_assert(KeySize == 0x10 || KeySize == 0x20, "KeySize must be 128 or 256."); | 31 | static_assert(KeySize == 0x10 || KeySize == 0x20, "KeySize must be 128 or 256."); |
| @@ -38,25 +38,25 @@ public: | |||
| 38 | void SetIV(std::vector<u8> iv); | 38 | void SetIV(std::vector<u8> iv); |
| 39 | 39 | ||
| 40 | template <typename Source, typename Dest> | 40 | template <typename Source, typename Dest> |
| 41 | void Transcode(const Source* src, size_t size, Dest* dest, Op op) const { | 41 | void Transcode(const Source* src, std::size_t size, Dest* dest, Op op) const { |
| 42 | static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>, | 42 | static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>, |
| 43 | "Transcode source and destination types must be trivially copyable."); | 43 | "Transcode source and destination types must be trivially copyable."); |
| 44 | Transcode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), op); | 44 | Transcode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), op); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | void Transcode(const u8* src, size_t size, u8* dest, Op op) const; | 47 | void Transcode(const u8* src, std::size_t size, u8* dest, Op op) const; |
| 48 | 48 | ||
| 49 | template <typename Source, typename Dest> | 49 | template <typename Source, typename Dest> |
| 50 | void XTSTranscode(const Source* src, size_t size, Dest* dest, size_t sector_id, | 50 | void XTSTranscode(const Source* src, std::size_t size, Dest* dest, std::size_t sector_id, |
| 51 | size_t sector_size, Op op) { | 51 | std::size_t sector_size, Op op) { |
| 52 | static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>, | 52 | static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>, |
| 53 | "XTSTranscode source and destination types must be trivially copyable."); | 53 | "XTSTranscode source and destination types must be trivially copyable."); |
| 54 | XTSTranscode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), sector_id, | 54 | XTSTranscode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), sector_id, |
| 55 | sector_size, op); | 55 | sector_size, op); |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | void XTSTranscode(const u8* src, size_t size, u8* dest, size_t sector_id, size_t sector_size, | 58 | void XTSTranscode(const u8* src, std::size_t size, u8* dest, std::size_t sector_id, |
| 59 | Op op); | 59 | std::size_t sector_size, Op op); |
| 60 | 60 | ||
| 61 | private: | 61 | private: |
| 62 | std::unique_ptr<CipherContext> ctx; | 62 | std::unique_ptr<CipherContext> ctx; |
diff --git a/src/core/crypto/ctr_encryption_layer.cpp b/src/core/crypto/ctr_encryption_layer.cpp index 296fad419..902841c77 100644 --- a/src/core/crypto/ctr_encryption_layer.cpp +++ b/src/core/crypto/ctr_encryption_layer.cpp | |||
| @@ -8,11 +8,12 @@ | |||
| 8 | 8 | ||
| 9 | namespace Core::Crypto { | 9 | namespace Core::Crypto { |
| 10 | 10 | ||
| 11 | CTREncryptionLayer::CTREncryptionLayer(FileSys::VirtualFile base_, Key128 key_, size_t base_offset) | 11 | CTREncryptionLayer::CTREncryptionLayer(FileSys::VirtualFile base_, Key128 key_, |
| 12 | std::size_t base_offset) | ||
| 12 | : EncryptionLayer(std::move(base_)), base_offset(base_offset), cipher(key_, Mode::CTR), | 13 | : EncryptionLayer(std::move(base_)), base_offset(base_offset), cipher(key_, Mode::CTR), |
| 13 | iv(16, 0) {} | 14 | iv(16, 0) {} |
| 14 | 15 | ||
| 15 | size_t CTREncryptionLayer::Read(u8* data, size_t length, size_t offset) const { | 16 | std::size_t CTREncryptionLayer::Read(u8* data, std::size_t length, std::size_t offset) const { |
| 16 | if (length == 0) | 17 | if (length == 0) |
| 17 | return 0; | 18 | return 0; |
| 18 | 19 | ||
| @@ -28,7 +29,7 @@ size_t CTREncryptionLayer::Read(u8* data, size_t length, size_t offset) const { | |||
| 28 | std::vector<u8> block = base->ReadBytes(0x10, offset - sector_offset); | 29 | std::vector<u8> block = base->ReadBytes(0x10, offset - sector_offset); |
| 29 | UpdateIV(base_offset + offset - sector_offset); | 30 | UpdateIV(base_offset + offset - sector_offset); |
| 30 | cipher.Transcode(block.data(), block.size(), block.data(), Op::Decrypt); | 31 | cipher.Transcode(block.data(), block.size(), block.data(), Op::Decrypt); |
| 31 | size_t read = 0x10 - sector_offset; | 32 | std::size_t read = 0x10 - sector_offset; |
| 32 | 33 | ||
| 33 | if (length + sector_offset < 0x10) { | 34 | if (length + sector_offset < 0x10) { |
| 34 | std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read)); | 35 | std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read)); |
| @@ -43,9 +44,9 @@ void CTREncryptionLayer::SetIV(const std::vector<u8>& iv_) { | |||
| 43 | iv.assign(iv_.cbegin(), iv_.cbegin() + length); | 44 | iv.assign(iv_.cbegin(), iv_.cbegin() + length); |
| 44 | } | 45 | } |
| 45 | 46 | ||
| 46 | void CTREncryptionLayer::UpdateIV(size_t offset) const { | 47 | void CTREncryptionLayer::UpdateIV(std::size_t offset) const { |
| 47 | offset >>= 4; | 48 | offset >>= 4; |
| 48 | for (size_t i = 0; i < 8; ++i) { | 49 | for (std::size_t i = 0; i < 8; ++i) { |
| 49 | iv[16 - i - 1] = offset & 0xFF; | 50 | iv[16 - i - 1] = offset & 0xFF; |
| 50 | offset >>= 8; | 51 | offset >>= 8; |
| 51 | } | 52 | } |
diff --git a/src/core/crypto/ctr_encryption_layer.h b/src/core/crypto/ctr_encryption_layer.h index 11b8683c7..a7bf810f4 100644 --- a/src/core/crypto/ctr_encryption_layer.h +++ b/src/core/crypto/ctr_encryption_layer.h | |||
| @@ -14,20 +14,20 @@ namespace Core::Crypto { | |||
| 14 | // Sits on top of a VirtualFile and provides CTR-mode AES decription. | 14 | // Sits on top of a VirtualFile and provides CTR-mode AES decription. |
| 15 | class CTREncryptionLayer : public EncryptionLayer { | 15 | class CTREncryptionLayer : public EncryptionLayer { |
| 16 | public: | 16 | public: |
| 17 | CTREncryptionLayer(FileSys::VirtualFile base, Key128 key, size_t base_offset); | 17 | CTREncryptionLayer(FileSys::VirtualFile base, Key128 key, std::size_t base_offset); |
| 18 | 18 | ||
| 19 | size_t Read(u8* data, size_t length, size_t offset) const override; | 19 | std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override; |
| 20 | 20 | ||
| 21 | void SetIV(const std::vector<u8>& iv); | 21 | void SetIV(const std::vector<u8>& iv); |
| 22 | 22 | ||
| 23 | private: | 23 | private: |
| 24 | size_t base_offset; | 24 | std::size_t base_offset; |
| 25 | 25 | ||
| 26 | // Must be mutable as operations modify cipher contexts. | 26 | // Must be mutable as operations modify cipher contexts. |
| 27 | mutable AESCipher<Key128> cipher; | 27 | mutable AESCipher<Key128> cipher; |
| 28 | mutable std::vector<u8> iv; | 28 | mutable std::vector<u8> iv; |
| 29 | 29 | ||
| 30 | void UpdateIV(size_t offset) const; | 30 | void UpdateIV(std::size_t offset) const; |
| 31 | }; | 31 | }; |
| 32 | 32 | ||
| 33 | } // namespace Core::Crypto | 33 | } // namespace Core::Crypto |
diff --git a/src/core/crypto/encryption_layer.cpp b/src/core/crypto/encryption_layer.cpp index 4204527e3..4c377d7d4 100644 --- a/src/core/crypto/encryption_layer.cpp +++ b/src/core/crypto/encryption_layer.cpp | |||
| @@ -12,11 +12,11 @@ std::string EncryptionLayer::GetName() const { | |||
| 12 | return base->GetName(); | 12 | return base->GetName(); |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | size_t EncryptionLayer::GetSize() const { | 15 | std::size_t EncryptionLayer::GetSize() const { |
| 16 | return base->GetSize(); | 16 | return base->GetSize(); |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | bool EncryptionLayer::Resize(size_t new_size) { | 19 | bool EncryptionLayer::Resize(std::size_t new_size) { |
| 20 | return false; | 20 | return false; |
| 21 | } | 21 | } |
| 22 | 22 | ||
| @@ -32,7 +32,7 @@ bool EncryptionLayer::IsReadable() const { | |||
| 32 | return true; | 32 | return true; |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | size_t EncryptionLayer::Write(const u8* data, size_t length, size_t offset) { | 35 | std::size_t EncryptionLayer::Write(const u8* data, std::size_t length, std::size_t offset) { |
| 36 | return 0; | 36 | return 0; |
| 37 | } | 37 | } |
| 38 | 38 | ||
diff --git a/src/core/crypto/encryption_layer.h b/src/core/crypto/encryption_layer.h index 7f05af9b4..53619cb38 100644 --- a/src/core/crypto/encryption_layer.h +++ b/src/core/crypto/encryption_layer.h | |||
| @@ -15,15 +15,15 @@ class EncryptionLayer : public FileSys::VfsFile { | |||
| 15 | public: | 15 | public: |
| 16 | explicit EncryptionLayer(FileSys::VirtualFile base); | 16 | explicit EncryptionLayer(FileSys::VirtualFile base); |
| 17 | 17 | ||
| 18 | size_t Read(u8* data, size_t length, size_t offset) const override = 0; | 18 | std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override = 0; |
| 19 | 19 | ||
| 20 | std::string GetName() const override; | 20 | std::string GetName() const override; |
| 21 | size_t GetSize() const override; | 21 | std::size_t GetSize() const override; |
| 22 | bool Resize(size_t new_size) override; | 22 | bool Resize(std::size_t new_size) override; |
| 23 | std::shared_ptr<FileSys::VfsDirectory> GetContainingDirectory() const override; | 23 | std::shared_ptr<FileSys::VfsDirectory> GetContainingDirectory() const override; |
| 24 | bool IsWritable() const override; | 24 | bool IsWritable() const override; |
| 25 | bool IsReadable() const override; | 25 | bool IsReadable() const override; |
| 26 | size_t Write(const u8* data, size_t length, size_t offset) override; | 26 | std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override; |
| 27 | bool Rename(std::string_view name) override; | 27 | bool Rename(std::string_view name) override; |
| 28 | 28 | ||
| 29 | protected: | 29 | protected: |
diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp index 6f27f990b..bf3a70944 100644 --- a/src/core/crypto/key_manager.cpp +++ b/src/core/crypto/key_manager.cpp | |||
| @@ -54,7 +54,7 @@ boost::optional<Key128> DeriveSDSeed() { | |||
| 54 | return boost::none; | 54 | return boost::none; |
| 55 | 55 | ||
| 56 | std::array<u8, 0x10> buffer{}; | 56 | std::array<u8, 0x10> buffer{}; |
| 57 | size_t offset = 0; | 57 | std::size_t offset = 0; |
| 58 | for (; offset + 0x10 < save_43.GetSize(); ++offset) { | 58 | for (; offset + 0x10 < save_43.GetSize(); ++offset) { |
| 59 | save_43.Seek(offset, SEEK_SET); | 59 | save_43.Seek(offset, SEEK_SET); |
| 60 | save_43.ReadBytes(buffer.data(), buffer.size()); | 60 | save_43.ReadBytes(buffer.data(), buffer.size()); |
| @@ -105,7 +105,7 @@ Loader::ResultStatus DeriveSDKeys(std::array<Key256, 2>& sd_keys, const KeyManag | |||
| 105 | 105 | ||
| 106 | // Combine sources and seed | 106 | // Combine sources and seed |
| 107 | for (auto& source : sd_key_sources) { | 107 | for (auto& source : sd_key_sources) { |
| 108 | for (size_t i = 0; i < source.size(); ++i) | 108 | for (std::size_t i = 0; i < source.size(); ++i) |
| 109 | source[i] ^= sd_seed[i & 0xF]; | 109 | source[i] ^= sd_seed[i & 0xF]; |
| 110 | } | 110 | } |
| 111 | 111 | ||
| @@ -207,7 +207,7 @@ Key256 KeyManager::GetKey(S256KeyType id, u64 field1, u64 field2) const { | |||
| 207 | return s256_keys.at({id, field1, field2}); | 207 | return s256_keys.at({id, field1, field2}); |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | template <size_t Size> | 210 | template <std::size_t Size> |
| 211 | void KeyManager::WriteKeyToFile(bool title_key, std::string_view keyname, | 211 | void KeyManager::WriteKeyToFile(bool title_key, std::string_view keyname, |
| 212 | const std::array<u8, Size>& key) { | 212 | const std::array<u8, Size>& key) { |
| 213 | const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir); | 213 | const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir); |
diff --git a/src/core/crypto/key_manager.h b/src/core/crypto/key_manager.h index ce67913bb..978eec8dc 100644 --- a/src/core/crypto/key_manager.h +++ b/src/core/crypto/key_manager.h | |||
| @@ -108,7 +108,7 @@ private: | |||
| 108 | void LoadFromFile(const std::string& filename, bool is_title_keys); | 108 | void LoadFromFile(const std::string& filename, bool is_title_keys); |
| 109 | void AttemptLoadKeyFile(const std::string& dir1, const std::string& dir2, | 109 | void AttemptLoadKeyFile(const std::string& dir1, const std::string& dir2, |
| 110 | const std::string& filename, bool title); | 110 | const std::string& filename, bool title); |
| 111 | template <size_t Size> | 111 | template <std::size_t Size> |
| 112 | void WriteKeyToFile(bool title_key, std::string_view keyname, const std::array<u8, Size>& key); | 112 | void WriteKeyToFile(bool title_key, std::string_view keyname, const std::array<u8, Size>& key); |
| 113 | 113 | ||
| 114 | static const boost::container::flat_map<std::string, KeyIndex<S128KeyType>> s128_file_id; | 114 | static const boost::container::flat_map<std::string, KeyIndex<S128KeyType>> s128_file_id; |
diff --git a/src/core/crypto/xts_encryption_layer.cpp b/src/core/crypto/xts_encryption_layer.cpp index c10832cfe..8f0ba4ee7 100644 --- a/src/core/crypto/xts_encryption_layer.cpp +++ b/src/core/crypto/xts_encryption_layer.cpp | |||
| @@ -14,7 +14,7 @@ constexpr u64 XTS_SECTOR_SIZE = 0x4000; | |||
| 14 | XTSEncryptionLayer::XTSEncryptionLayer(FileSys::VirtualFile base_, Key256 key_) | 14 | XTSEncryptionLayer::XTSEncryptionLayer(FileSys::VirtualFile base_, Key256 key_) |
| 15 | : EncryptionLayer(std::move(base_)), cipher(key_, Mode::XTS) {} | 15 | : EncryptionLayer(std::move(base_)), cipher(key_, Mode::XTS) {} |
| 16 | 16 | ||
| 17 | size_t XTSEncryptionLayer::Read(u8* data, size_t length, size_t offset) const { | 17 | std::size_t XTSEncryptionLayer::Read(u8* data, std::size_t length, std::size_t offset) const { |
| 18 | if (length == 0) | 18 | if (length == 0) |
| 19 | return 0; | 19 | return 0; |
| 20 | 20 | ||
| @@ -46,7 +46,7 @@ size_t XTSEncryptionLayer::Read(u8* data, size_t length, size_t offset) const { | |||
| 46 | block.resize(XTS_SECTOR_SIZE); | 46 | block.resize(XTS_SECTOR_SIZE); |
| 47 | cipher.XTSTranscode(block.data(), block.size(), block.data(), | 47 | cipher.XTSTranscode(block.data(), block.size(), block.data(), |
| 48 | (offset - sector_offset) / XTS_SECTOR_SIZE, XTS_SECTOR_SIZE, Op::Decrypt); | 48 | (offset - sector_offset) / XTS_SECTOR_SIZE, XTS_SECTOR_SIZE, Op::Decrypt); |
| 49 | const size_t read = XTS_SECTOR_SIZE - sector_offset; | 49 | const std::size_t read = XTS_SECTOR_SIZE - sector_offset; |
| 50 | 50 | ||
| 51 | if (length + sector_offset < XTS_SECTOR_SIZE) { | 51 | if (length + sector_offset < XTS_SECTOR_SIZE) { |
| 52 | std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read)); | 52 | std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read)); |
diff --git a/src/core/crypto/xts_encryption_layer.h b/src/core/crypto/xts_encryption_layer.h index 7a1f1dc64..5f8f00fe7 100644 --- a/src/core/crypto/xts_encryption_layer.h +++ b/src/core/crypto/xts_encryption_layer.h | |||
| @@ -15,7 +15,7 @@ class XTSEncryptionLayer : public EncryptionLayer { | |||
| 15 | public: | 15 | public: |
| 16 | XTSEncryptionLayer(FileSys::VirtualFile base, Key256 key); | 16 | XTSEncryptionLayer(FileSys::VirtualFile base, Key256 key); |
| 17 | 17 | ||
| 18 | size_t Read(u8* data, size_t length, size_t offset) const override; | 18 | std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override; |
| 19 | 19 | ||
| 20 | private: | 20 | private: |
| 21 | // Must be mutable as operations modify cipher contexts. | 21 | // Must be mutable as operations modify cipher contexts. |
diff --git a/src/core/file_sys/card_image.cpp b/src/core/file_sys/card_image.cpp index 8218893b2..edfc1bbd4 100644 --- a/src/core/file_sys/card_image.cpp +++ b/src/core/file_sys/card_image.cpp | |||
| @@ -41,13 +41,14 @@ XCI::XCI(VirtualFile file_) : file(std::move(file_)), partitions(0x4) { | |||
| 41 | 41 | ||
| 42 | for (XCIPartition partition : | 42 | for (XCIPartition partition : |
| 43 | {XCIPartition::Update, XCIPartition::Normal, XCIPartition::Secure, XCIPartition::Logo}) { | 43 | {XCIPartition::Update, XCIPartition::Normal, XCIPartition::Secure, XCIPartition::Logo}) { |
| 44 | auto raw = main_hfs.GetFile(partition_names[static_cast<size_t>(partition)]); | 44 | auto raw = main_hfs.GetFile(partition_names[static_cast<std::size_t>(partition)]); |
| 45 | if (raw != nullptr) | 45 | if (raw != nullptr) |
| 46 | partitions[static_cast<size_t>(partition)] = std::make_shared<PartitionFilesystem>(raw); | 46 | partitions[static_cast<std::size_t>(partition)] = |
| 47 | std::make_shared<PartitionFilesystem>(raw); | ||
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | secure_partition = std::make_shared<NSP>( | 50 | secure_partition = std::make_shared<NSP>( |
| 50 | main_hfs.GetFile(partition_names[static_cast<size_t>(XCIPartition::Secure)])); | 51 | main_hfs.GetFile(partition_names[static_cast<std::size_t>(XCIPartition::Secure)])); |
| 51 | 52 | ||
| 52 | const auto secure_ncas = secure_partition->GetNCAsCollapsed(); | 53 | const auto secure_ncas = secure_partition->GetNCAsCollapsed(); |
| 53 | std::copy(secure_ncas.begin(), secure_ncas.end(), std::back_inserter(ncas)); | 54 | std::copy(secure_ncas.begin(), secure_ncas.end(), std::back_inserter(ncas)); |
| @@ -92,7 +93,7 @@ Loader::ResultStatus XCI::GetProgramNCAStatus() const { | |||
| 92 | } | 93 | } |
| 93 | 94 | ||
| 94 | VirtualDir XCI::GetPartition(XCIPartition partition) const { | 95 | VirtualDir XCI::GetPartition(XCIPartition partition) const { |
| 95 | return partitions[static_cast<size_t>(partition)]; | 96 | return partitions[static_cast<std::size_t>(partition)]; |
| 96 | } | 97 | } |
| 97 | 98 | ||
| 98 | std::shared_ptr<NSP> XCI::GetSecurePartitionNSP() const { | 99 | std::shared_ptr<NSP> XCI::GetSecurePartitionNSP() const { |
| @@ -168,11 +169,11 @@ bool XCI::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) { | |||
| 168 | } | 169 | } |
| 169 | 170 | ||
| 170 | Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { | 171 | Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { |
| 171 | if (partitions[static_cast<size_t>(part)] == nullptr) { | 172 | if (partitions[static_cast<std::size_t>(part)] == nullptr) { |
| 172 | return Loader::ResultStatus::ErrorXCIMissingPartition; | 173 | return Loader::ResultStatus::ErrorXCIMissingPartition; |
| 173 | } | 174 | } |
| 174 | 175 | ||
| 175 | for (const VirtualFile& file : partitions[static_cast<size_t>(part)]->GetFiles()) { | 176 | for (const VirtualFile& file : partitions[static_cast<std::size_t>(part)]->GetFiles()) { |
| 176 | if (file->GetExtension() != "nca") | 177 | if (file->GetExtension() != "nca") |
| 177 | continue; | 178 | continue; |
| 178 | auto nca = std::make_shared<NCA>(file); | 179 | auto nca = std::make_shared<NCA>(file); |
| @@ -187,7 +188,7 @@ Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { | |||
| 187 | } else { | 188 | } else { |
| 188 | const u16 error_id = static_cast<u16>(nca->GetStatus()); | 189 | const u16 error_id = static_cast<u16>(nca->GetStatus()); |
| 189 | LOG_CRITICAL(Loader, "Could not load NCA {}/{}, failed with error code {:04X} ({})", | 190 | LOG_CRITICAL(Loader, "Could not load NCA {}/{}, failed with error code {:04X} ({})", |
| 190 | partition_names[static_cast<size_t>(part)], nca->GetName(), error_id, | 191 | partition_names[static_cast<std::size_t>(part)], nca->GetName(), error_id, |
| 191 | nca->GetStatus()); | 192 | nca->GetStatus()); |
| 192 | } | 193 | } |
| 193 | } | 194 | } |
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp index 79bfb6fec..45fc0b574 100644 --- a/src/core/file_sys/content_archive.cpp +++ b/src/core/file_sys/content_archive.cpp | |||
| @@ -298,11 +298,11 @@ NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_off | |||
| 298 | auto section = sections[i]; | 298 | auto section = sections[i]; |
| 299 | 299 | ||
| 300 | if (section.raw.header.filesystem_type == NCASectionFilesystemType::ROMFS) { | 300 | if (section.raw.header.filesystem_type == NCASectionFilesystemType::ROMFS) { |
| 301 | const size_t base_offset = | 301 | const std::size_t base_offset = |
| 302 | header.section_tables[i].media_offset * MEDIA_OFFSET_MULTIPLIER; | 302 | header.section_tables[i].media_offset * MEDIA_OFFSET_MULTIPLIER; |
| 303 | ivfc_offset = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].offset; | 303 | ivfc_offset = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].offset; |
| 304 | const size_t romfs_offset = base_offset + ivfc_offset; | 304 | const std::size_t romfs_offset = base_offset + ivfc_offset; |
| 305 | const size_t romfs_size = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].size; | 305 | const std::size_t romfs_size = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].size; |
| 306 | auto raw = std::make_shared<OffsetVfsFile>(file, romfs_size, romfs_offset); | 306 | auto raw = std::make_shared<OffsetVfsFile>(file, romfs_size, romfs_offset); |
| 307 | auto dec = Decrypt(section, raw, romfs_offset); | 307 | auto dec = Decrypt(section, raw, romfs_offset); |
| 308 | 308 | ||
diff --git a/src/core/file_sys/directory.h b/src/core/file_sys/directory.h index 3759e743a..12bb90ec8 100644 --- a/src/core/file_sys/directory.h +++ b/src/core/file_sys/directory.h | |||
| @@ -25,7 +25,7 @@ enum EntryType : u8 { | |||
| 25 | struct Entry { | 25 | struct Entry { |
| 26 | Entry(std::string_view view, EntryType entry_type, u64 entry_size) | 26 | Entry(std::string_view view, EntryType entry_type, u64 entry_size) |
| 27 | : type{entry_type}, file_size{entry_size} { | 27 | : type{entry_type}, file_size{entry_size} { |
| 28 | const size_t copy_size = view.copy(filename, std::size(filename) - 1); | 28 | const std::size_t copy_size = view.copy(filename, std::size(filename) - 1); |
| 29 | filename[copy_size] = '\0'; | 29 | filename[copy_size] = '\0'; |
| 30 | } | 30 | } |
| 31 | 31 | ||
diff --git a/src/core/file_sys/nca_metadata.cpp b/src/core/file_sys/nca_metadata.cpp index cdfbc5aaf..479916b69 100644 --- a/src/core/file_sys/nca_metadata.cpp +++ b/src/core/file_sys/nca_metadata.cpp | |||
| @@ -11,11 +11,11 @@ | |||
| 11 | namespace FileSys { | 11 | namespace FileSys { |
| 12 | 12 | ||
| 13 | bool operator>=(TitleType lhs, TitleType rhs) { | 13 | bool operator>=(TitleType lhs, TitleType rhs) { |
| 14 | return static_cast<size_t>(lhs) >= static_cast<size_t>(rhs); | 14 | return static_cast<std::size_t>(lhs) >= static_cast<std::size_t>(rhs); |
| 15 | } | 15 | } |
| 16 | 16 | ||
| 17 | bool operator<=(TitleType lhs, TitleType rhs) { | 17 | bool operator<=(TitleType lhs, TitleType rhs) { |
| 18 | return static_cast<size_t>(lhs) <= static_cast<size_t>(rhs); | 18 | return static_cast<std::size_t>(lhs) <= static_cast<std::size_t>(rhs); |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | CNMT::CNMT(VirtualFile file) { | 21 | CNMT::CNMT(VirtualFile file) { |
diff --git a/src/core/file_sys/nca_patch.cpp b/src/core/file_sys/nca_patch.cpp index 6fc5bd7d8..0090cc6c4 100644 --- a/src/core/file_sys/nca_patch.cpp +++ b/src/core/file_sys/nca_patch.cpp | |||
| @@ -22,11 +22,11 @@ BKTR::BKTR(VirtualFile base_romfs_, VirtualFile bktr_romfs_, RelocationBlock rel | |||
| 22 | base_romfs(std::move(base_romfs_)), bktr_romfs(std::move(bktr_romfs_)), | 22 | base_romfs(std::move(base_romfs_)), bktr_romfs(std::move(bktr_romfs_)), |
| 23 | encrypted(is_encrypted_), key(key_), base_offset(base_offset_), ivfc_offset(ivfc_offset_), | 23 | encrypted(is_encrypted_), key(key_), base_offset(base_offset_), ivfc_offset(ivfc_offset_), |
| 24 | section_ctr(section_ctr_) { | 24 | section_ctr(section_ctr_) { |
| 25 | for (size_t i = 0; i < relocation.number_buckets - 1; ++i) { | 25 | for (std::size_t i = 0; i < relocation.number_buckets - 1; ++i) { |
| 26 | relocation_buckets[i].entries.push_back({relocation.base_offsets[i + 1], 0, 0}); | 26 | relocation_buckets[i].entries.push_back({relocation.base_offsets[i + 1], 0, 0}); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | for (size_t i = 0; i < subsection.number_buckets - 1; ++i) { | 29 | for (std::size_t i = 0; i < subsection.number_buckets - 1; ++i) { |
| 30 | subsection_buckets[i].entries.push_back({subsection_buckets[i + 1].entries[0].address_patch, | 30 | subsection_buckets[i].entries.push_back({subsection_buckets[i + 1].entries[0].address_patch, |
| 31 | {0}, | 31 | {0}, |
| 32 | subsection_buckets[i + 1].entries[0].ctr}); | 32 | subsection_buckets[i + 1].entries[0].ctr}); |
| @@ -37,7 +37,7 @@ BKTR::BKTR(VirtualFile base_romfs_, VirtualFile bktr_romfs_, RelocationBlock rel | |||
| 37 | 37 | ||
| 38 | BKTR::~BKTR() = default; | 38 | BKTR::~BKTR() = default; |
| 39 | 39 | ||
| 40 | size_t BKTR::Read(u8* data, size_t length, size_t offset) const { | 40 | std::size_t BKTR::Read(u8* data, std::size_t length, std::size_t offset) const { |
| 41 | // Read out of bounds. | 41 | // Read out of bounds. |
| 42 | if (offset >= relocation.size) | 42 | if (offset >= relocation.size) |
| 43 | return 0; | 43 | return 0; |
| @@ -69,14 +69,14 @@ size_t BKTR::Read(u8* data, size_t length, size_t offset) const { | |||
| 69 | std::vector<u8> iv(16); | 69 | std::vector<u8> iv(16); |
| 70 | auto subsection_ctr = subsection.ctr; | 70 | auto subsection_ctr = subsection.ctr; |
| 71 | auto offset_iv = section_offset + base_offset; | 71 | auto offset_iv = section_offset + base_offset; |
| 72 | for (size_t i = 0; i < section_ctr.size(); ++i) | 72 | for (std::size_t i = 0; i < section_ctr.size(); ++i) |
| 73 | iv[i] = section_ctr[0x8 - i - 1]; | 73 | iv[i] = section_ctr[0x8 - i - 1]; |
| 74 | offset_iv >>= 4; | 74 | offset_iv >>= 4; |
| 75 | for (size_t i = 0; i < sizeof(u64); ++i) { | 75 | for (std::size_t i = 0; i < sizeof(u64); ++i) { |
| 76 | iv[0xF - i] = static_cast<u8>(offset_iv & 0xFF); | 76 | iv[0xF - i] = static_cast<u8>(offset_iv & 0xFF); |
| 77 | offset_iv >>= 8; | 77 | offset_iv >>= 8; |
| 78 | } | 78 | } |
| 79 | for (size_t i = 0; i < sizeof(u32); ++i) { | 79 | for (std::size_t i = 0; i < sizeof(u32); ++i) { |
| 80 | iv[0x7 - i] = static_cast<u8>(subsection_ctr & 0xFF); | 80 | iv[0x7 - i] = static_cast<u8>(subsection_ctr & 0xFF); |
| 81 | subsection_ctr >>= 8; | 81 | subsection_ctr >>= 8; |
| 82 | } | 82 | } |
| @@ -110,8 +110,8 @@ size_t BKTR::Read(u8* data, size_t length, size_t offset) const { | |||
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | template <bool Subsection, typename BlockType, typename BucketType> | 112 | template <bool Subsection, typename BlockType, typename BucketType> |
| 113 | std::pair<size_t, size_t> BKTR::SearchBucketEntry(u64 offset, BlockType block, | 113 | std::pair<std::size_t, std::size_t> BKTR::SearchBucketEntry(u64 offset, BlockType block, |
| 114 | BucketType buckets) const { | 114 | BucketType buckets) const { |
| 115 | if constexpr (Subsection) { | 115 | if constexpr (Subsection) { |
| 116 | const auto last_bucket = buckets[block.number_buckets - 1]; | 116 | const auto last_bucket = buckets[block.number_buckets - 1]; |
| 117 | if (offset >= last_bucket.entries[last_bucket.number_entries].address_patch) | 117 | if (offset >= last_bucket.entries[last_bucket.number_entries].address_patch) |
| @@ -120,18 +120,18 @@ std::pair<size_t, size_t> BKTR::SearchBucketEntry(u64 offset, BlockType block, | |||
| 120 | ASSERT_MSG(offset <= block.size, "Offset is out of bounds in BKTR relocation block."); | 120 | ASSERT_MSG(offset <= block.size, "Offset is out of bounds in BKTR relocation block."); |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | size_t bucket_id = std::count_if(block.base_offsets.begin() + 1, | 123 | std::size_t bucket_id = std::count_if( |
| 124 | block.base_offsets.begin() + block.number_buckets, | 124 | block.base_offsets.begin() + 1, block.base_offsets.begin() + block.number_buckets, |
| 125 | [&offset](u64 base_offset) { return base_offset <= offset; }); | 125 | [&offset](u64 base_offset) { return base_offset <= offset; }); |
| 126 | 126 | ||
| 127 | const auto bucket = buckets[bucket_id]; | 127 | const auto bucket = buckets[bucket_id]; |
| 128 | 128 | ||
| 129 | if (bucket.number_entries == 1) | 129 | if (bucket.number_entries == 1) |
| 130 | return {bucket_id, 0}; | 130 | return {bucket_id, 0}; |
| 131 | 131 | ||
| 132 | size_t low = 0; | 132 | std::size_t low = 0; |
| 133 | size_t mid = 0; | 133 | std::size_t mid = 0; |
| 134 | size_t high = bucket.number_entries - 1; | 134 | std::size_t high = bucket.number_entries - 1; |
| 135 | while (low <= high) { | 135 | while (low <= high) { |
| 136 | mid = (low + high) / 2; | 136 | mid = (low + high) / 2; |
| 137 | if (bucket.entries[mid].address_patch > offset) { | 137 | if (bucket.entries[mid].address_patch > offset) { |
| @@ -179,11 +179,11 @@ std::string BKTR::GetName() const { | |||
| 179 | return base_romfs->GetName(); | 179 | return base_romfs->GetName(); |
| 180 | } | 180 | } |
| 181 | 181 | ||
| 182 | size_t BKTR::GetSize() const { | 182 | std::size_t BKTR::GetSize() const { |
| 183 | return relocation.size; | 183 | return relocation.size; |
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | bool BKTR::Resize(size_t new_size) { | 186 | bool BKTR::Resize(std::size_t new_size) { |
| 187 | return false; | 187 | return false; |
| 188 | } | 188 | } |
| 189 | 189 | ||
| @@ -199,7 +199,7 @@ bool BKTR::IsReadable() const { | |||
| 199 | return true; | 199 | return true; |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | size_t BKTR::Write(const u8* data, size_t length, size_t offset) { | 202 | std::size_t BKTR::Write(const u8* data, std::size_t length, std::size_t offset) { |
| 203 | return 0; | 203 | return 0; |
| 204 | } | 204 | } |
| 205 | 205 | ||
diff --git a/src/core/file_sys/nca_patch.h b/src/core/file_sys/nca_patch.h index 381f3504f..8e64e8378 100644 --- a/src/core/file_sys/nca_patch.h +++ b/src/core/file_sys/nca_patch.h | |||
| @@ -98,13 +98,13 @@ public: | |||
| 98 | Core::Crypto::Key128 key, u64 base_offset, u64 ivfc_offset, std::array<u8, 8> section_ctr); | 98 | Core::Crypto::Key128 key, u64 base_offset, u64 ivfc_offset, std::array<u8, 8> section_ctr); |
| 99 | ~BKTR() override; | 99 | ~BKTR() override; |
| 100 | 100 | ||
| 101 | size_t Read(u8* data, size_t length, size_t offset) const override; | 101 | std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override; |
| 102 | 102 | ||
| 103 | std::string GetName() const override; | 103 | std::string GetName() const override; |
| 104 | 104 | ||
| 105 | size_t GetSize() const override; | 105 | std::size_t GetSize() const override; |
| 106 | 106 | ||
| 107 | bool Resize(size_t new_size) override; | 107 | bool Resize(std::size_t new_size) override; |
| 108 | 108 | ||
| 109 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; | 109 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; |
| 110 | 110 | ||
| @@ -112,14 +112,14 @@ public: | |||
| 112 | 112 | ||
| 113 | bool IsReadable() const override; | 113 | bool IsReadable() const override; |
| 114 | 114 | ||
| 115 | size_t Write(const u8* data, size_t length, size_t offset) override; | 115 | std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override; |
| 116 | 116 | ||
| 117 | bool Rename(std::string_view name) override; | 117 | bool Rename(std::string_view name) override; |
| 118 | 118 | ||
| 119 | private: | 119 | private: |
| 120 | template <bool Subsection, typename BlockType, typename BucketType> | 120 | template <bool Subsection, typename BlockType, typename BucketType> |
| 121 | std::pair<size_t, size_t> SearchBucketEntry(u64 offset, BlockType block, | 121 | std::pair<std::size_t, std::size_t> SearchBucketEntry(u64 offset, BlockType block, |
| 122 | BucketType buckets) const; | 122 | BucketType buckets) const; |
| 123 | 123 | ||
| 124 | RelocationEntry GetRelocationEntry(u64 offset) const; | 124 | RelocationEntry GetRelocationEntry(u64 offset) const; |
| 125 | RelocationEntry GetNextRelocationEntry(u64 offset) const; | 125 | RelocationEntry GetNextRelocationEntry(u64 offset) const; |
diff --git a/src/core/file_sys/partition_filesystem.cpp b/src/core/file_sys/partition_filesystem.cpp index c377edc9c..f5b3b0175 100644 --- a/src/core/file_sys/partition_filesystem.cpp +++ b/src/core/file_sys/partition_filesystem.cpp | |||
| @@ -42,21 +42,21 @@ PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) { | |||
| 42 | 42 | ||
| 43 | is_hfs = pfs_header.magic == Common::MakeMagic('H', 'F', 'S', '0'); | 43 | is_hfs = pfs_header.magic == Common::MakeMagic('H', 'F', 'S', '0'); |
| 44 | 44 | ||
| 45 | size_t entry_size = is_hfs ? sizeof(HFSEntry) : sizeof(PFSEntry); | 45 | std::size_t entry_size = is_hfs ? sizeof(HFSEntry) : sizeof(PFSEntry); |
| 46 | size_t metadata_size = | 46 | std::size_t metadata_size = |
| 47 | sizeof(Header) + (pfs_header.num_entries * entry_size) + pfs_header.strtab_size; | 47 | sizeof(Header) + (pfs_header.num_entries * entry_size) + pfs_header.strtab_size; |
| 48 | 48 | ||
| 49 | // Actually read in now... | 49 | // Actually read in now... |
| 50 | std::vector<u8> file_data = file->ReadBytes(metadata_size); | 50 | std::vector<u8> file_data = file->ReadBytes(metadata_size); |
| 51 | const size_t total_size = file_data.size(); | 51 | const std::size_t total_size = file_data.size(); |
| 52 | 52 | ||
| 53 | if (total_size != metadata_size) { | 53 | if (total_size != metadata_size) { |
| 54 | status = Loader::ResultStatus::ErrorIncorrectPFSFileSize; | 54 | status = Loader::ResultStatus::ErrorIncorrectPFSFileSize; |
| 55 | return; | 55 | return; |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | size_t entries_offset = sizeof(Header); | 58 | std::size_t entries_offset = sizeof(Header); |
| 59 | size_t strtab_offset = entries_offset + (pfs_header.num_entries * entry_size); | 59 | std::size_t strtab_offset = entries_offset + (pfs_header.num_entries * entry_size); |
| 60 | content_offset = strtab_offset + pfs_header.strtab_size; | 60 | content_offset = strtab_offset + pfs_header.strtab_size; |
| 61 | for (u16 i = 0; i < pfs_header.num_entries; i++) { | 61 | for (u16 i = 0; i < pfs_header.num_entries; i++) { |
| 62 | FSEntry entry; | 62 | FSEntry entry; |
diff --git a/src/core/file_sys/partition_filesystem.h b/src/core/file_sys/partition_filesystem.h index be7bc32a8..e80d2456b 100644 --- a/src/core/file_sys/partition_filesystem.h +++ b/src/core/file_sys/partition_filesystem.h | |||
| @@ -79,7 +79,7 @@ private: | |||
| 79 | 79 | ||
| 80 | Header pfs_header{}; | 80 | Header pfs_header{}; |
| 81 | bool is_hfs = false; | 81 | bool is_hfs = false; |
| 82 | size_t content_offset = 0; | 82 | std::size_t content_offset = 0; |
| 83 | 83 | ||
| 84 | std::vector<VirtualFile> pfs_files; | 84 | std::vector<VirtualFile> pfs_files; |
| 85 | std::vector<VirtualDir> pfs_dirs; | 85 | std::vector<VirtualDir> pfs_dirs; |
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp index 6cecab336..b37b4c68b 100644 --- a/src/core/file_sys/patch_manager.cpp +++ b/src/core/file_sys/patch_manager.cpp | |||
| @@ -21,7 +21,7 @@ constexpr u64 SINGLE_BYTE_MODULUS = 0x100; | |||
| 21 | std::string FormatTitleVersion(u32 version, TitleVersionFormat format) { | 21 | std::string FormatTitleVersion(u32 version, TitleVersionFormat format) { |
| 22 | std::array<u8, sizeof(u32)> bytes{}; | 22 | std::array<u8, sizeof(u32)> bytes{}; |
| 23 | bytes[0] = version % SINGLE_BYTE_MODULUS; | 23 | bytes[0] = version % SINGLE_BYTE_MODULUS; |
| 24 | for (size_t i = 1; i < bytes.size(); ++i) { | 24 | for (std::size_t i = 1; i < bytes.size(); ++i) { |
| 25 | version /= SINGLE_BYTE_MODULUS; | 25 | version /= SINGLE_BYTE_MODULUS; |
| 26 | bytes[i] = version % SINGLE_BYTE_MODULUS; | 26 | bytes[i] = version % SINGLE_BYTE_MODULUS; |
| 27 | } | 27 | } |
| @@ -36,7 +36,7 @@ constexpr std::array<const char*, 1> PATCH_TYPE_NAMES{ | |||
| 36 | }; | 36 | }; |
| 37 | 37 | ||
| 38 | std::string FormatPatchTypeName(PatchType type) { | 38 | std::string FormatPatchTypeName(PatchType type) { |
| 39 | return PATCH_TYPE_NAMES.at(static_cast<size_t>(type)); | 39 | return PATCH_TYPE_NAMES.at(static_cast<std::size_t>(type)); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | PatchManager::PatchManager(u64 title_id) : title_id(title_id) {} | 42 | PatchManager::PatchManager(u64 title_id) : title_id(title_id) {} |
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp index ccb685526..9d19aaa6d 100644 --- a/src/core/file_sys/program_metadata.cpp +++ b/src/core/file_sys/program_metadata.cpp | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | namespace FileSys { | 13 | namespace FileSys { |
| 14 | 14 | ||
| 15 | Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) { | 15 | Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) { |
| 16 | size_t total_size = static_cast<size_t>(file->GetSize()); | 16 | std::size_t total_size = static_cast<std::size_t>(file->GetSize()); |
| 17 | if (total_size < sizeof(Header)) | 17 | if (total_size < sizeof(Header)) |
| 18 | return Loader::ResultStatus::ErrorBadNPDMHeader; | 18 | return Loader::ResultStatus::ErrorBadNPDMHeader; |
| 19 | 19 | ||
diff --git a/src/core/file_sys/registered_cache.cpp b/src/core/file_sys/registered_cache.cpp index 7361a67be..dad7ae10b 100644 --- a/src/core/file_sys/registered_cache.cpp +++ b/src/core/file_sys/registered_cache.cpp | |||
| @@ -62,11 +62,11 @@ static std::string GetCNMTName(TitleType type, u64 title_id) { | |||
| 62 | "" ///< Currently unknown 'DeltaTitle' | 62 | "" ///< Currently unknown 'DeltaTitle' |
| 63 | }; | 63 | }; |
| 64 | 64 | ||
| 65 | auto index = static_cast<size_t>(type); | 65 | auto index = static_cast<std::size_t>(type); |
| 66 | // If the index is after the jump in TitleType, subtract it out. | 66 | // If the index is after the jump in TitleType, subtract it out. |
| 67 | if (index >= static_cast<size_t>(TitleType::Application)) { | 67 | if (index >= static_cast<std::size_t>(TitleType::Application)) { |
| 68 | index -= static_cast<size_t>(TitleType::Application) - | 68 | index -= static_cast<std::size_t>(TitleType::Application) - |
| 69 | static_cast<size_t>(TitleType::FirmwarePackageB); | 69 | static_cast<std::size_t>(TitleType::FirmwarePackageB); |
| 70 | } | 70 | } |
| 71 | return fmt::format("{}_{:016x}.cnmt", TITLE_TYPE_NAMES[index], title_id); | 71 | return fmt::format("{}_{:016x}.cnmt", TITLE_TYPE_NAMES[index], title_id); |
| 72 | } | 72 | } |
| @@ -105,7 +105,7 @@ VirtualFile RegisteredCache::OpenFileOrDirectoryConcat(const VirtualDir& dir, | |||
| 105 | } else { | 105 | } else { |
| 106 | std::vector<VirtualFile> concat; | 106 | std::vector<VirtualFile> concat; |
| 107 | // Since the files are a two-digit hex number, max is FF. | 107 | // Since the files are a two-digit hex number, max is FF. |
| 108 | for (size_t i = 0; i < 0x100; ++i) { | 108 | for (std::size_t i = 0; i < 0x100; ++i) { |
| 109 | auto next = nca_dir->GetFile(fmt::format("{:02X}", i)); | 109 | auto next = nca_dir->GetFile(fmt::format("{:02X}", i)); |
| 110 | if (next != nullptr) { | 110 | if (next != nullptr) { |
| 111 | concat.push_back(std::move(next)); | 111 | concat.push_back(std::move(next)); |
diff --git a/src/core/file_sys/romfs.cpp b/src/core/file_sys/romfs.cpp index e490c8ace..9f6e41cdf 100644 --- a/src/core/file_sys/romfs.cpp +++ b/src/core/file_sys/romfs.cpp | |||
| @@ -49,7 +49,7 @@ struct FileEntry { | |||
| 49 | static_assert(sizeof(FileEntry) == 0x20, "FileEntry has incorrect size."); | 49 | static_assert(sizeof(FileEntry) == 0x20, "FileEntry has incorrect size."); |
| 50 | 50 | ||
| 51 | template <typename Entry> | 51 | template <typename Entry> |
| 52 | static std::pair<Entry, std::string> GetEntry(const VirtualFile& file, size_t offset) { | 52 | static std::pair<Entry, std::string> GetEntry(const VirtualFile& file, std::size_t offset) { |
| 53 | Entry entry{}; | 53 | Entry entry{}; |
| 54 | if (file->ReadObject(&entry, offset) != sizeof(Entry)) | 54 | if (file->ReadObject(&entry, offset) != sizeof(Entry)) |
| 55 | return {}; | 55 | return {}; |
| @@ -59,8 +59,8 @@ static std::pair<Entry, std::string> GetEntry(const VirtualFile& file, size_t of | |||
| 59 | return {entry, string}; | 59 | return {entry, string}; |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | void ProcessFile(VirtualFile file, size_t file_offset, size_t data_offset, u32 this_file_offset, | 62 | void ProcessFile(VirtualFile file, std::size_t file_offset, std::size_t data_offset, |
| 63 | std::shared_ptr<VectorVfsDirectory> parent) { | 63 | u32 this_file_offset, std::shared_ptr<VectorVfsDirectory> parent) { |
| 64 | while (true) { | 64 | while (true) { |
| 65 | auto entry = GetEntry<FileEntry>(file, file_offset + this_file_offset); | 65 | auto entry = GetEntry<FileEntry>(file, file_offset + this_file_offset); |
| 66 | 66 | ||
| @@ -74,8 +74,9 @@ void ProcessFile(VirtualFile file, size_t file_offset, size_t data_offset, u32 t | |||
| 74 | } | 74 | } |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | void ProcessDirectory(VirtualFile file, size_t dir_offset, size_t file_offset, size_t data_offset, | 77 | void ProcessDirectory(VirtualFile file, std::size_t dir_offset, std::size_t file_offset, |
| 78 | u32 this_dir_offset, std::shared_ptr<VectorVfsDirectory> parent) { | 78 | std::size_t data_offset, u32 this_dir_offset, |
| 79 | std::shared_ptr<VectorVfsDirectory> parent) { | ||
| 79 | while (true) { | 80 | while (true) { |
| 80 | auto entry = GetEntry<DirectoryEntry>(file, dir_offset + this_dir_offset); | 81 | auto entry = GetEntry<DirectoryEntry>(file, dir_offset + this_dir_offset); |
| 81 | auto current = std::make_shared<VectorVfsDirectory>( | 82 | auto current = std::make_shared<VectorVfsDirectory>( |
diff --git a/src/core/file_sys/vfs.cpp b/src/core/file_sys/vfs.cpp index 146c839f4..d7b52abfd 100644 --- a/src/core/file_sys/vfs.cpp +++ b/src/core/file_sys/vfs.cpp | |||
| @@ -167,18 +167,18 @@ std::string VfsFile::GetExtension() const { | |||
| 167 | 167 | ||
| 168 | VfsDirectory::~VfsDirectory() = default; | 168 | VfsDirectory::~VfsDirectory() = default; |
| 169 | 169 | ||
| 170 | boost::optional<u8> VfsFile::ReadByte(size_t offset) const { | 170 | boost::optional<u8> VfsFile::ReadByte(std::size_t offset) const { |
| 171 | u8 out{}; | 171 | u8 out{}; |
| 172 | size_t size = Read(&out, 1, offset); | 172 | std::size_t size = Read(&out, 1, offset); |
| 173 | if (size == 1) | 173 | if (size == 1) |
| 174 | return out; | 174 | return out; |
| 175 | 175 | ||
| 176 | return boost::none; | 176 | return boost::none; |
| 177 | } | 177 | } |
| 178 | 178 | ||
| 179 | std::vector<u8> VfsFile::ReadBytes(size_t size, size_t offset) const { | 179 | std::vector<u8> VfsFile::ReadBytes(std::size_t size, std::size_t offset) const { |
| 180 | std::vector<u8> out(size); | 180 | std::vector<u8> out(size); |
| 181 | size_t read_size = Read(out.data(), size, offset); | 181 | std::size_t read_size = Read(out.data(), size, offset); |
| 182 | out.resize(read_size); | 182 | out.resize(read_size); |
| 183 | return out; | 183 | return out; |
| 184 | } | 184 | } |
| @@ -187,11 +187,11 @@ std::vector<u8> VfsFile::ReadAllBytes() const { | |||
| 187 | return ReadBytes(GetSize()); | 187 | return ReadBytes(GetSize()); |
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | bool VfsFile::WriteByte(u8 data, size_t offset) { | 190 | bool VfsFile::WriteByte(u8 data, std::size_t offset) { |
| 191 | return Write(&data, 1, offset) == 1; | 191 | return Write(&data, 1, offset) == 1; |
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | size_t VfsFile::WriteBytes(const std::vector<u8>& data, size_t offset) { | 194 | std::size_t VfsFile::WriteBytes(const std::vector<u8>& data, std::size_t offset) { |
| 195 | return Write(data.data(), data.size(), offset); | 195 | return Write(data.data(), data.size(), offset); |
| 196 | } | 196 | } |
| 197 | 197 | ||
| @@ -215,7 +215,7 @@ std::shared_ptr<VfsFile> VfsDirectory::GetFileRelative(std::string_view path) co | |||
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | auto dir = GetSubdirectory(vec[0]); | 217 | auto dir = GetSubdirectory(vec[0]); |
| 218 | for (size_t component = 1; component < vec.size() - 1; ++component) { | 218 | for (std::size_t component = 1; component < vec.size() - 1; ++component) { |
| 219 | if (dir == nullptr) { | 219 | if (dir == nullptr) { |
| 220 | return nullptr; | 220 | return nullptr; |
| 221 | } | 221 | } |
| @@ -249,7 +249,7 @@ std::shared_ptr<VfsDirectory> VfsDirectory::GetDirectoryRelative(std::string_vie | |||
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | auto dir = GetSubdirectory(vec[0]); | 251 | auto dir = GetSubdirectory(vec[0]); |
| 252 | for (size_t component = 1; component < vec.size(); ++component) { | 252 | for (std::size_t component = 1; component < vec.size(); ++component) { |
| 253 | if (dir == nullptr) { | 253 | if (dir == nullptr) { |
| 254 | return nullptr; | 254 | return nullptr; |
| 255 | } | 255 | } |
| @@ -286,7 +286,7 @@ bool VfsDirectory::IsRoot() const { | |||
| 286 | return GetParentDirectory() == nullptr; | 286 | return GetParentDirectory() == nullptr; |
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | size_t VfsDirectory::GetSize() const { | 289 | std::size_t VfsDirectory::GetSize() const { |
| 290 | const auto& files = GetFiles(); | 290 | const auto& files = GetFiles(); |
| 291 | const auto sum_sizes = [](const auto& range) { | 291 | const auto sum_sizes = [](const auto& range) { |
| 292 | return std::accumulate(range.begin(), range.end(), 0ULL, | 292 | return std::accumulate(range.begin(), range.end(), 0ULL, |
| @@ -434,13 +434,13 @@ bool ReadOnlyVfsDirectory::Rename(std::string_view name) { | |||
| 434 | return false; | 434 | return false; |
| 435 | } | 435 | } |
| 436 | 436 | ||
| 437 | bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block_size) { | 437 | bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, std::size_t block_size) { |
| 438 | if (file1->GetSize() != file2->GetSize()) | 438 | if (file1->GetSize() != file2->GetSize()) |
| 439 | return false; | 439 | return false; |
| 440 | 440 | ||
| 441 | std::vector<u8> f1_v(block_size); | 441 | std::vector<u8> f1_v(block_size); |
| 442 | std::vector<u8> f2_v(block_size); | 442 | std::vector<u8> f2_v(block_size); |
| 443 | for (size_t i = 0; i < file1->GetSize(); i += block_size) { | 443 | for (std::size_t i = 0; i < file1->GetSize(); i += block_size) { |
| 444 | auto f1_vs = file1->Read(f1_v.data(), block_size, i); | 444 | auto f1_vs = file1->Read(f1_v.data(), block_size, i); |
| 445 | auto f2_vs = file2->Read(f2_v.data(), block_size, i); | 445 | auto f2_vs = file2->Read(f2_v.data(), block_size, i); |
| 446 | 446 | ||
diff --git a/src/core/file_sys/vfs.h b/src/core/file_sys/vfs.h index 5142a3e86..74489b452 100644 --- a/src/core/file_sys/vfs.h +++ b/src/core/file_sys/vfs.h | |||
| @@ -92,9 +92,9 @@ public: | |||
| 92 | // Retrieves the extension of the file name. | 92 | // Retrieves the extension of the file name. |
| 93 | virtual std::string GetExtension() const; | 93 | virtual std::string GetExtension() const; |
| 94 | // Retrieves the size of the file. | 94 | // Retrieves the size of the file. |
| 95 | virtual size_t GetSize() const = 0; | 95 | virtual std::size_t GetSize() const = 0; |
| 96 | // Resizes the file to new_size. Returns whether or not the operation was successful. | 96 | // Resizes the file to new_size. Returns whether or not the operation was successful. |
| 97 | virtual bool Resize(size_t new_size) = 0; | 97 | virtual bool Resize(std::size_t new_size) = 0; |
| 98 | // Gets a pointer to the directory containing this file, returning nullptr if there is none. | 98 | // Gets a pointer to the directory containing this file, returning nullptr if there is none. |
| 99 | virtual std::shared_ptr<VfsDirectory> GetContainingDirectory() const = 0; | 99 | virtual std::shared_ptr<VfsDirectory> GetContainingDirectory() const = 0; |
| 100 | 100 | ||
| @@ -105,15 +105,15 @@ public: | |||
| 105 | 105 | ||
| 106 | // The primary method of reading from the file. Reads length bytes into data starting at offset | 106 | // The primary method of reading from the file. Reads length bytes into data starting at offset |
| 107 | // into file. Returns number of bytes successfully read. | 107 | // into file. Returns number of bytes successfully read. |
| 108 | virtual size_t Read(u8* data, size_t length, size_t offset = 0) const = 0; | 108 | virtual std::size_t Read(u8* data, std::size_t length, std::size_t offset = 0) const = 0; |
| 109 | // The primary method of writing to the file. Writes length bytes from data starting at offset | 109 | // The primary method of writing to the file. Writes length bytes from data starting at offset |
| 110 | // into file. Returns number of bytes successfully written. | 110 | // into file. Returns number of bytes successfully written. |
| 111 | virtual size_t Write(const u8* data, size_t length, size_t offset = 0) = 0; | 111 | virtual std::size_t Write(const u8* data, std::size_t length, std::size_t offset = 0) = 0; |
| 112 | 112 | ||
| 113 | // Reads exactly one byte at the offset provided, returning boost::none on error. | 113 | // Reads exactly one byte at the offset provided, returning boost::none on error. |
| 114 | virtual boost::optional<u8> ReadByte(size_t offset = 0) const; | 114 | virtual boost::optional<u8> ReadByte(std::size_t offset = 0) const; |
| 115 | // Reads size bytes starting at offset in file into a vector. | 115 | // Reads size bytes starting at offset in file into a vector. |
| 116 | virtual std::vector<u8> ReadBytes(size_t size, size_t offset = 0) const; | 116 | virtual std::vector<u8> ReadBytes(std::size_t size, std::size_t offset = 0) const; |
| 117 | // Reads all the bytes from the file into a vector. Equivalent to 'file->Read(file->GetSize(), | 117 | // Reads all the bytes from the file into a vector. Equivalent to 'file->Read(file->GetSize(), |
| 118 | // 0)' | 118 | // 0)' |
| 119 | virtual std::vector<u8> ReadAllBytes() const; | 119 | virtual std::vector<u8> ReadAllBytes() const; |
| @@ -121,7 +121,7 @@ public: | |||
| 121 | // Reads an array of type T, size number_elements starting at offset. | 121 | // Reads an array of type T, size number_elements starting at offset. |
| 122 | // Returns the number of bytes (sizeof(T)*number_elements) read successfully. | 122 | // Returns the number of bytes (sizeof(T)*number_elements) read successfully. |
| 123 | template <typename T> | 123 | template <typename T> |
| 124 | size_t ReadArray(T* data, size_t number_elements, size_t offset = 0) const { | 124 | std::size_t ReadArray(T* data, std::size_t number_elements, std::size_t offset = 0) const { |
| 125 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); | 125 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); |
| 126 | 126 | ||
| 127 | return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset); | 127 | return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset); |
| @@ -130,7 +130,7 @@ public: | |||
| 130 | // Reads size bytes into the memory starting at data starting at offset into the file. | 130 | // Reads size bytes into the memory starting at data starting at offset into the file. |
| 131 | // Returns the number of bytes read successfully. | 131 | // Returns the number of bytes read successfully. |
| 132 | template <typename T> | 132 | template <typename T> |
| 133 | size_t ReadBytes(T* data, size_t size, size_t offset = 0) const { | 133 | std::size_t ReadBytes(T* data, std::size_t size, std::size_t offset = 0) const { |
| 134 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); | 134 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); |
| 135 | return Read(reinterpret_cast<u8*>(data), size, offset); | 135 | return Read(reinterpret_cast<u8*>(data), size, offset); |
| 136 | } | 136 | } |
| @@ -138,22 +138,22 @@ public: | |||
| 138 | // Reads one object of type T starting at offset in file. | 138 | // Reads one object of type T starting at offset in file. |
| 139 | // Returns the number of bytes read successfully (sizeof(T)). | 139 | // Returns the number of bytes read successfully (sizeof(T)). |
| 140 | template <typename T> | 140 | template <typename T> |
| 141 | size_t ReadObject(T* data, size_t offset = 0) const { | 141 | std::size_t ReadObject(T* data, std::size_t offset = 0) const { |
| 142 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); | 142 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); |
| 143 | return Read(reinterpret_cast<u8*>(data), sizeof(T), offset); | 143 | return Read(reinterpret_cast<u8*>(data), sizeof(T), offset); |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | // Writes exactly one byte to offset in file and retuns whether or not the byte was written | 146 | // Writes exactly one byte to offset in file and retuns whether or not the byte was written |
| 147 | // successfully. | 147 | // successfully. |
| 148 | virtual bool WriteByte(u8 data, size_t offset = 0); | 148 | virtual bool WriteByte(u8 data, std::size_t offset = 0); |
| 149 | // Writes a vector of bytes to offset in file and returns the number of bytes successfully | 149 | // Writes a vector of bytes to offset in file and returns the number of bytes successfully |
| 150 | // written. | 150 | // written. |
| 151 | virtual size_t WriteBytes(const std::vector<u8>& data, size_t offset = 0); | 151 | virtual std::size_t WriteBytes(const std::vector<u8>& data, std::size_t offset = 0); |
| 152 | 152 | ||
| 153 | // Writes an array of type T, size number_elements to offset in file. | 153 | // Writes an array of type T, size number_elements to offset in file. |
| 154 | // Returns the number of bytes (sizeof(T)*number_elements) written successfully. | 154 | // Returns the number of bytes (sizeof(T)*number_elements) written successfully. |
| 155 | template <typename T> | 155 | template <typename T> |
| 156 | size_t WriteArray(const T* data, size_t number_elements, size_t offset = 0) { | 156 | std::size_t WriteArray(const T* data, std::size_t number_elements, std::size_t offset = 0) { |
| 157 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); | 157 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); |
| 158 | return Write(data, number_elements * sizeof(T), offset); | 158 | return Write(data, number_elements * sizeof(T), offset); |
| 159 | } | 159 | } |
| @@ -161,7 +161,7 @@ public: | |||
| 161 | // Writes size bytes starting at memory location data to offset in file. | 161 | // Writes size bytes starting at memory location data to offset in file. |
| 162 | // Returns the number of bytes written successfully. | 162 | // Returns the number of bytes written successfully. |
| 163 | template <typename T> | 163 | template <typename T> |
| 164 | size_t WriteBytes(const T* data, size_t size, size_t offset = 0) { | 164 | std::size_t WriteBytes(const T* data, std::size_t size, std::size_t offset = 0) { |
| 165 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); | 165 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); |
| 166 | return Write(reinterpret_cast<const u8*>(data), size, offset); | 166 | return Write(reinterpret_cast<const u8*>(data), size, offset); |
| 167 | } | 167 | } |
| @@ -169,7 +169,7 @@ public: | |||
| 169 | // Writes one object of type T to offset in file. | 169 | // Writes one object of type T to offset in file. |
| 170 | // Returns the number of bytes written successfully (sizeof(T)). | 170 | // Returns the number of bytes written successfully (sizeof(T)). |
| 171 | template <typename T> | 171 | template <typename T> |
| 172 | size_t WriteObject(const T& data, size_t offset = 0) { | 172 | std::size_t WriteObject(const T& data, std::size_t offset = 0) { |
| 173 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); | 173 | static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); |
| 174 | return Write(&data, sizeof(T), offset); | 174 | return Write(&data, sizeof(T), offset); |
| 175 | } | 175 | } |
| @@ -221,7 +221,7 @@ public: | |||
| 221 | // Returns the name of the directory. | 221 | // Returns the name of the directory. |
| 222 | virtual std::string GetName() const = 0; | 222 | virtual std::string GetName() const = 0; |
| 223 | // Returns the total size of all files and subdirectories in this directory. | 223 | // Returns the total size of all files and subdirectories in this directory. |
| 224 | virtual size_t GetSize() const; | 224 | virtual std::size_t GetSize() const; |
| 225 | // Returns the parent directory of this directory. Returns nullptr if this directory is root or | 225 | // Returns the parent directory of this directory. Returns nullptr if this directory is root or |
| 226 | // has no parent. | 226 | // has no parent. |
| 227 | virtual std::shared_ptr<VfsDirectory> GetParentDirectory() const = 0; | 227 | virtual std::shared_ptr<VfsDirectory> GetParentDirectory() const = 0; |
| @@ -311,7 +311,7 @@ public: | |||
| 311 | }; | 311 | }; |
| 312 | 312 | ||
| 313 | // Compare the two files, byte-for-byte, in increments specificed by block_size | 313 | // Compare the two files, byte-for-byte, in increments specificed by block_size |
| 314 | bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block_size = 0x200); | 314 | bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, std::size_t block_size = 0x200); |
| 315 | 315 | ||
| 316 | // A method that copies the raw data between two different implementations of VirtualFile. If you | 316 | // A method that copies the raw data between two different implementations of VirtualFile. If you |
| 317 | // are using the same implementation, it is probably better to use the Copy method in the parent | 317 | // are using the same implementation, it is probably better to use the Copy method in the parent |
diff --git a/src/core/file_sys/vfs_concat.cpp b/src/core/file_sys/vfs_concat.cpp index e6bf586a3..25a980cbb 100644 --- a/src/core/file_sys/vfs_concat.cpp +++ b/src/core/file_sys/vfs_concat.cpp | |||
| @@ -20,7 +20,7 @@ VirtualFile ConcatenateFiles(std::vector<VirtualFile> files, std::string name) { | |||
| 20 | 20 | ||
| 21 | ConcatenatedVfsFile::ConcatenatedVfsFile(std::vector<VirtualFile> files_, std::string name) | 21 | ConcatenatedVfsFile::ConcatenatedVfsFile(std::vector<VirtualFile> files_, std::string name) |
| 22 | : name(std::move(name)) { | 22 | : name(std::move(name)) { |
| 23 | size_t next_offset = 0; | 23 | std::size_t next_offset = 0; |
| 24 | for (const auto& file : files_) { | 24 | for (const auto& file : files_) { |
| 25 | files[next_offset] = file; | 25 | files[next_offset] = file; |
| 26 | next_offset += file->GetSize(); | 26 | next_offset += file->GetSize(); |
| @@ -35,13 +35,13 @@ std::string ConcatenatedVfsFile::GetName() const { | |||
| 35 | return files.begin()->second->GetName(); | 35 | return files.begin()->second->GetName(); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | size_t ConcatenatedVfsFile::GetSize() const { | 38 | std::size_t ConcatenatedVfsFile::GetSize() const { |
| 39 | if (files.empty()) | 39 | if (files.empty()) |
| 40 | return 0; | 40 | return 0; |
| 41 | return files.rbegin()->first + files.rbegin()->second->GetSize(); | 41 | return files.rbegin()->first + files.rbegin()->second->GetSize(); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | bool ConcatenatedVfsFile::Resize(size_t new_size) { | 44 | bool ConcatenatedVfsFile::Resize(std::size_t new_size) { |
| 45 | return false; | 45 | return false; |
| 46 | } | 46 | } |
| 47 | 47 | ||
| @@ -59,7 +59,7 @@ bool ConcatenatedVfsFile::IsReadable() const { | |||
| 59 | return true; | 59 | return true; |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | size_t ConcatenatedVfsFile::Read(u8* data, size_t length, size_t offset) const { | 62 | std::size_t ConcatenatedVfsFile::Read(u8* data, std::size_t length, std::size_t offset) const { |
| 63 | auto entry = files.end(); | 63 | auto entry = files.end(); |
| 64 | for (auto iter = files.begin(); iter != files.end(); ++iter) { | 64 | for (auto iter = files.begin(); iter != files.end(); ++iter) { |
| 65 | if (iter->first > offset) { | 65 | if (iter->first > offset) { |
| @@ -84,7 +84,7 @@ size_t ConcatenatedVfsFile::Read(u8* data, size_t length, size_t offset) const { | |||
| 84 | return entry->second->Read(data, length, offset - entry->first); | 84 | return entry->second->Read(data, length, offset - entry->first); |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | size_t ConcatenatedVfsFile::Write(const u8* data, size_t length, size_t offset) { | 87 | std::size_t ConcatenatedVfsFile::Write(const u8* data, std::size_t length, std::size_t offset) { |
| 88 | return 0; | 88 | return 0; |
| 89 | } | 89 | } |
| 90 | 90 | ||
diff --git a/src/core/file_sys/vfs_concat.h b/src/core/file_sys/vfs_concat.h index 686d32515..31775db7e 100644 --- a/src/core/file_sys/vfs_concat.h +++ b/src/core/file_sys/vfs_concat.h | |||
| @@ -23,13 +23,13 @@ class ConcatenatedVfsFile : public VfsFile { | |||
| 23 | 23 | ||
| 24 | public: | 24 | public: |
| 25 | std::string GetName() const override; | 25 | std::string GetName() const override; |
| 26 | size_t GetSize() const override; | 26 | std::size_t GetSize() const override; |
| 27 | bool Resize(size_t new_size) override; | 27 | bool Resize(std::size_t new_size) override; |
| 28 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; | 28 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; |
| 29 | bool IsWritable() const override; | 29 | bool IsWritable() const override; |
| 30 | bool IsReadable() const override; | 30 | bool IsReadable() const override; |
| 31 | size_t Read(u8* data, size_t length, size_t offset) const override; | 31 | std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override; |
| 32 | size_t Write(const u8* data, size_t length, size_t offset) override; | 32 | std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override; |
| 33 | bool Rename(std::string_view name) override; | 33 | bool Rename(std::string_view name) override; |
| 34 | 34 | ||
| 35 | private: | 35 | private: |
diff --git a/src/core/file_sys/vfs_offset.cpp b/src/core/file_sys/vfs_offset.cpp index 847cde2f5..f5ed291ea 100644 --- a/src/core/file_sys/vfs_offset.cpp +++ b/src/core/file_sys/vfs_offset.cpp | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | namespace FileSys { | 10 | namespace FileSys { |
| 11 | 11 | ||
| 12 | OffsetVfsFile::OffsetVfsFile(std::shared_ptr<VfsFile> file_, size_t size_, size_t offset_, | 12 | OffsetVfsFile::OffsetVfsFile(std::shared_ptr<VfsFile> file_, std::size_t size_, std::size_t offset_, |
| 13 | std::string name_, VirtualDir parent_) | 13 | std::string name_, VirtualDir parent_) |
| 14 | : file(file_), offset(offset_), size(size_), name(std::move(name_)), | 14 | : file(file_), offset(offset_), size(size_), name(std::move(name_)), |
| 15 | parent(parent_ == nullptr ? file->GetContainingDirectory() : std::move(parent_)) {} | 15 | parent(parent_ == nullptr ? file->GetContainingDirectory() : std::move(parent_)) {} |
| @@ -18,11 +18,11 @@ std::string OffsetVfsFile::GetName() const { | |||
| 18 | return name.empty() ? file->GetName() : name; | 18 | return name.empty() ? file->GetName() : name; |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | size_t OffsetVfsFile::GetSize() const { | 21 | std::size_t OffsetVfsFile::GetSize() const { |
| 22 | return size; | 22 | return size; |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | bool OffsetVfsFile::Resize(size_t new_size) { | 25 | bool OffsetVfsFile::Resize(std::size_t new_size) { |
| 26 | if (offset + new_size < file->GetSize()) { | 26 | if (offset + new_size < file->GetSize()) { |
| 27 | size = new_size; | 27 | size = new_size; |
| 28 | } else { | 28 | } else { |
| @@ -47,22 +47,22 @@ bool OffsetVfsFile::IsReadable() const { | |||
| 47 | return file->IsReadable(); | 47 | return file->IsReadable(); |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | size_t OffsetVfsFile::Read(u8* data, size_t length, size_t r_offset) const { | 50 | std::size_t OffsetVfsFile::Read(u8* data, std::size_t length, std::size_t r_offset) const { |
| 51 | return file->Read(data, TrimToFit(length, r_offset), offset + r_offset); | 51 | return file->Read(data, TrimToFit(length, r_offset), offset + r_offset); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | size_t OffsetVfsFile::Write(const u8* data, size_t length, size_t r_offset) { | 54 | std::size_t OffsetVfsFile::Write(const u8* data, std::size_t length, std::size_t r_offset) { |
| 55 | return file->Write(data, TrimToFit(length, r_offset), offset + r_offset); | 55 | return file->Write(data, TrimToFit(length, r_offset), offset + r_offset); |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | boost::optional<u8> OffsetVfsFile::ReadByte(size_t r_offset) const { | 58 | boost::optional<u8> OffsetVfsFile::ReadByte(std::size_t r_offset) const { |
| 59 | if (r_offset < size) | 59 | if (r_offset < size) |
| 60 | return file->ReadByte(offset + r_offset); | 60 | return file->ReadByte(offset + r_offset); |
| 61 | 61 | ||
| 62 | return boost::none; | 62 | return boost::none; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | std::vector<u8> OffsetVfsFile::ReadBytes(size_t r_size, size_t r_offset) const { | 65 | std::vector<u8> OffsetVfsFile::ReadBytes(std::size_t r_size, std::size_t r_offset) const { |
| 66 | return file->ReadBytes(TrimToFit(r_size, r_offset), offset + r_offset); | 66 | return file->ReadBytes(TrimToFit(r_size, r_offset), offset + r_offset); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| @@ -70,14 +70,14 @@ std::vector<u8> OffsetVfsFile::ReadAllBytes() const { | |||
| 70 | return file->ReadBytes(size, offset); | 70 | return file->ReadBytes(size, offset); |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | bool OffsetVfsFile::WriteByte(u8 data, size_t r_offset) { | 73 | bool OffsetVfsFile::WriteByte(u8 data, std::size_t r_offset) { |
| 74 | if (r_offset < size) | 74 | if (r_offset < size) |
| 75 | return file->WriteByte(data, offset + r_offset); | 75 | return file->WriteByte(data, offset + r_offset); |
| 76 | 76 | ||
| 77 | return false; | 77 | return false; |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | size_t OffsetVfsFile::WriteBytes(const std::vector<u8>& data, size_t r_offset) { | 80 | std::size_t OffsetVfsFile::WriteBytes(const std::vector<u8>& data, std::size_t r_offset) { |
| 81 | return file->Write(data.data(), TrimToFit(data.size(), r_offset), offset + r_offset); | 81 | return file->Write(data.data(), TrimToFit(data.size(), r_offset), offset + r_offset); |
| 82 | } | 82 | } |
| 83 | 83 | ||
| @@ -85,12 +85,12 @@ bool OffsetVfsFile::Rename(std::string_view name) { | |||
| 85 | return file->Rename(name); | 85 | return file->Rename(name); |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | size_t OffsetVfsFile::GetOffset() const { | 88 | std::size_t OffsetVfsFile::GetOffset() const { |
| 89 | return offset; | 89 | return offset; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | size_t OffsetVfsFile::TrimToFit(size_t r_size, size_t r_offset) const { | 92 | std::size_t OffsetVfsFile::TrimToFit(std::size_t r_size, std::size_t r_offset) const { |
| 93 | return std::clamp(r_size, size_t{0}, size - r_offset); | 93 | return std::clamp(r_size, std::size_t{0}, size - r_offset); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | } // namespace FileSys | 96 | } // namespace FileSys |
diff --git a/src/core/file_sys/vfs_offset.h b/src/core/file_sys/vfs_offset.h index cb92d1570..34cb180b3 100644 --- a/src/core/file_sys/vfs_offset.h +++ b/src/core/file_sys/vfs_offset.h | |||
| @@ -17,33 +17,33 @@ namespace FileSys { | |||
| 17 | // the size of this wrapper. | 17 | // the size of this wrapper. |
| 18 | class OffsetVfsFile : public VfsFile { | 18 | class OffsetVfsFile : public VfsFile { |
| 19 | public: | 19 | public: |
| 20 | OffsetVfsFile(std::shared_ptr<VfsFile> file, size_t size, size_t offset = 0, | 20 | OffsetVfsFile(std::shared_ptr<VfsFile> file, std::size_t size, std::size_t offset = 0, |
| 21 | std::string new_name = "", VirtualDir new_parent = nullptr); | 21 | std::string new_name = "", VirtualDir new_parent = nullptr); |
| 22 | 22 | ||
| 23 | std::string GetName() const override; | 23 | std::string GetName() const override; |
| 24 | size_t GetSize() const override; | 24 | std::size_t GetSize() const override; |
| 25 | bool Resize(size_t new_size) override; | 25 | bool Resize(std::size_t new_size) override; |
| 26 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; | 26 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; |
| 27 | bool IsWritable() const override; | 27 | bool IsWritable() const override; |
| 28 | bool IsReadable() const override; | 28 | bool IsReadable() const override; |
| 29 | size_t Read(u8* data, size_t length, size_t offset) const override; | 29 | std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override; |
| 30 | size_t Write(const u8* data, size_t length, size_t offset) override; | 30 | std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override; |
| 31 | boost::optional<u8> ReadByte(size_t offset) const override; | 31 | boost::optional<u8> ReadByte(std::size_t offset) const override; |
| 32 | std::vector<u8> ReadBytes(size_t size, size_t offset) const override; | 32 | std::vector<u8> ReadBytes(std::size_t size, std::size_t offset) const override; |
| 33 | std::vector<u8> ReadAllBytes() const override; | 33 | std::vector<u8> ReadAllBytes() const override; |
| 34 | bool WriteByte(u8 data, size_t offset) override; | 34 | bool WriteByte(u8 data, std::size_t offset) override; |
| 35 | size_t WriteBytes(const std::vector<u8>& data, size_t offset) override; | 35 | std::size_t WriteBytes(const std::vector<u8>& data, std::size_t offset) override; |
| 36 | 36 | ||
| 37 | bool Rename(std::string_view name) override; | 37 | bool Rename(std::string_view name) override; |
| 38 | 38 | ||
| 39 | size_t GetOffset() const; | 39 | std::size_t GetOffset() const; |
| 40 | 40 | ||
| 41 | private: | 41 | private: |
| 42 | size_t TrimToFit(size_t r_size, size_t r_offset) const; | 42 | std::size_t TrimToFit(std::size_t r_size, std::size_t r_offset) const; |
| 43 | 43 | ||
| 44 | std::shared_ptr<VfsFile> file; | 44 | std::shared_ptr<VfsFile> file; |
| 45 | size_t offset; | 45 | std::size_t offset; |
| 46 | size_t size; | 46 | std::size_t size; |
| 47 | std::string name; | 47 | std::string name; |
| 48 | VirtualDir parent; | 48 | VirtualDir parent; |
| 49 | }; | 49 | }; |
diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp index 89b101145..5e242e20f 100644 --- a/src/core/file_sys/vfs_real.cpp +++ b/src/core/file_sys/vfs_real.cpp | |||
| @@ -227,11 +227,11 @@ std::string RealVfsFile::GetName() const { | |||
| 227 | return path_components.back(); | 227 | return path_components.back(); |
| 228 | } | 228 | } |
| 229 | 229 | ||
| 230 | size_t RealVfsFile::GetSize() const { | 230 | std::size_t RealVfsFile::GetSize() const { |
| 231 | return backing->GetSize(); | 231 | return backing->GetSize(); |
| 232 | } | 232 | } |
| 233 | 233 | ||
| 234 | bool RealVfsFile::Resize(size_t new_size) { | 234 | bool RealVfsFile::Resize(std::size_t new_size) { |
| 235 | return backing->Resize(new_size); | 235 | return backing->Resize(new_size); |
| 236 | } | 236 | } |
| 237 | 237 | ||
| @@ -247,13 +247,13 @@ bool RealVfsFile::IsReadable() const { | |||
| 247 | return (perms & Mode::ReadWrite) != 0; | 247 | return (perms & Mode::ReadWrite) != 0; |
| 248 | } | 248 | } |
| 249 | 249 | ||
| 250 | size_t RealVfsFile::Read(u8* data, size_t length, size_t offset) const { | 250 | std::size_t RealVfsFile::Read(u8* data, std::size_t length, std::size_t offset) const { |
| 251 | if (!backing->Seek(offset, SEEK_SET)) | 251 | if (!backing->Seek(offset, SEEK_SET)) |
| 252 | return 0; | 252 | return 0; |
| 253 | return backing->ReadBytes(data, length); | 253 | return backing->ReadBytes(data, length); |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | size_t RealVfsFile::Write(const u8* data, size_t length, size_t offset) { | 256 | std::size_t RealVfsFile::Write(const u8* data, std::size_t length, std::size_t offset) { |
| 257 | if (!backing->Seek(offset, SEEK_SET)) | 257 | if (!backing->Seek(offset, SEEK_SET)) |
| 258 | return 0; | 258 | return 0; |
| 259 | return backing->WriteBytes(data, length); | 259 | return backing->WriteBytes(data, length); |
diff --git a/src/core/file_sys/vfs_real.h b/src/core/file_sys/vfs_real.h index 7db86691f..681c43e82 100644 --- a/src/core/file_sys/vfs_real.h +++ b/src/core/file_sys/vfs_real.h | |||
| @@ -48,13 +48,13 @@ public: | |||
| 48 | ~RealVfsFile() override; | 48 | ~RealVfsFile() override; |
| 49 | 49 | ||
| 50 | std::string GetName() const override; | 50 | std::string GetName() const override; |
| 51 | size_t GetSize() const override; | 51 | std::size_t GetSize() const override; |
| 52 | bool Resize(size_t new_size) override; | 52 | bool Resize(std::size_t new_size) override; |
| 53 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; | 53 | std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; |
| 54 | bool IsWritable() const override; | 54 | bool IsWritable() const override; |
| 55 | bool IsReadable() const override; | 55 | bool IsReadable() const override; |
| 56 | size_t Read(u8* data, size_t length, size_t offset) const override; | 56 | std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override; |
| 57 | size_t Write(const u8* data, size_t length, size_t offset) override; | 57 | std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override; |
| 58 | bool Rename(std::string_view name) override; | 58 | bool Rename(std::string_view name) override; |
| 59 | 59 | ||
| 60 | private: | 60 | private: |
diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp index 4dbc25c55..0173f71c1 100644 --- a/src/core/file_sys/xts_archive.cpp +++ b/src/core/file_sys/xts_archive.cpp | |||
| @@ -25,8 +25,8 @@ namespace FileSys { | |||
| 25 | constexpr u64 NAX_HEADER_PADDING_SIZE = 0x4000; | 25 | constexpr u64 NAX_HEADER_PADDING_SIZE = 0x4000; |
| 26 | 26 | ||
| 27 | template <typename SourceData, typename SourceKey, typename Destination> | 27 | template <typename SourceData, typename SourceKey, typename Destination> |
| 28 | static bool CalculateHMAC256(Destination* out, const SourceKey* key, size_t key_length, | 28 | static bool CalculateHMAC256(Destination* out, const SourceKey* key, std::size_t key_length, |
| 29 | const SourceData* data, size_t data_length) { | 29 | const SourceData* data, std::size_t data_length) { |
| 30 | mbedtls_md_context_t context; | 30 | mbedtls_md_context_t context; |
| 31 | mbedtls_md_init(&context); | 31 | mbedtls_md_init(&context); |
| 32 | 32 | ||
| @@ -91,7 +91,7 @@ Loader::ResultStatus NAX::Parse(std::string_view path) { | |||
| 91 | 91 | ||
| 92 | const auto enc_keys = header->key_area; | 92 | const auto enc_keys = header->key_area; |
| 93 | 93 | ||
| 94 | size_t i = 0; | 94 | std::size_t i = 0; |
| 95 | for (; i < sd_keys.size(); ++i) { | 95 | for (; i < sd_keys.size(); ++i) { |
| 96 | std::array<Core::Crypto::Key128, 2> nax_keys{}; | 96 | std::array<Core::Crypto::Key128, 2> nax_keys{}; |
| 97 | if (!CalculateHMAC256(nax_keys.data(), sd_keys[i].data(), 0x10, std::string(path).c_str(), | 97 | if (!CalculateHMAC256(nax_keys.data(), sd_keys[i].data(), 0x10, std::string(path).c_str(), |
| @@ -99,7 +99,7 @@ Loader::ResultStatus NAX::Parse(std::string_view path) { | |||
| 99 | return Loader::ResultStatus::ErrorNAXKeyHMACFailed; | 99 | return Loader::ResultStatus::ErrorNAXKeyHMACFailed; |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | for (size_t j = 0; j < nax_keys.size(); ++j) { | 102 | for (std::size_t j = 0; j < nax_keys.size(); ++j) { |
| 103 | Core::Crypto::AESCipher<Core::Crypto::Key128> cipher(nax_keys[j], | 103 | Core::Crypto::AESCipher<Core::Crypto::Key128> cipher(nax_keys[j], |
| 104 | Core::Crypto::Mode::ECB); | 104 | Core::Crypto::Mode::ECB); |
| 105 | cipher.Transcode(enc_keys[j].data(), 0x10, header->key_area[j].data(), | 105 | cipher.Transcode(enc_keys[j].data(), 0x10, header->key_area[j].data(), |
diff --git a/src/core/gdbstub/gdbstub.cpp b/src/core/gdbstub/gdbstub.cpp index 332e5c3d0..cfaf20a88 100644 --- a/src/core/gdbstub/gdbstub.cpp +++ b/src/core/gdbstub/gdbstub.cpp | |||
| @@ -292,7 +292,7 @@ static u8 NibbleToHex(u8 n) { | |||
| 292 | * @param src Pointer to array of output hex string characters. | 292 | * @param src Pointer to array of output hex string characters. |
| 293 | * @param len Length of src array. | 293 | * @param len Length of src array. |
| 294 | */ | 294 | */ |
| 295 | static u32 HexToInt(const u8* src, size_t len) { | 295 | static u32 HexToInt(const u8* src, std::size_t len) { |
| 296 | u32 output = 0; | 296 | u32 output = 0; |
| 297 | while (len-- > 0) { | 297 | while (len-- > 0) { |
| 298 | output = (output << 4) | HexCharToValue(src[0]); | 298 | output = (output << 4) | HexCharToValue(src[0]); |
| @@ -307,7 +307,7 @@ static u32 HexToInt(const u8* src, size_t len) { | |||
| 307 | * @param src Pointer to array of output hex string characters. | 307 | * @param src Pointer to array of output hex string characters. |
| 308 | * @param len Length of src array. | 308 | * @param len Length of src array. |
| 309 | */ | 309 | */ |
| 310 | static u64 HexToLong(const u8* src, size_t len) { | 310 | static u64 HexToLong(const u8* src, std::size_t len) { |
| 311 | u64 output = 0; | 311 | u64 output = 0; |
| 312 | while (len-- > 0) { | 312 | while (len-- > 0) { |
| 313 | output = (output << 4) | HexCharToValue(src[0]); | 313 | output = (output << 4) | HexCharToValue(src[0]); |
| @@ -323,7 +323,7 @@ static u64 HexToLong(const u8* src, size_t len) { | |||
| 323 | * @param src Pointer to array of u8 bytes. | 323 | * @param src Pointer to array of u8 bytes. |
| 324 | * @param len Length of src array. | 324 | * @param len Length of src array. |
| 325 | */ | 325 | */ |
| 326 | static void MemToGdbHex(u8* dest, const u8* src, size_t len) { | 326 | static void MemToGdbHex(u8* dest, const u8* src, std::size_t len) { |
| 327 | while (len-- > 0) { | 327 | while (len-- > 0) { |
| 328 | u8 tmp = *src++; | 328 | u8 tmp = *src++; |
| 329 | *dest++ = NibbleToHex(tmp >> 4); | 329 | *dest++ = NibbleToHex(tmp >> 4); |
| @@ -338,7 +338,7 @@ static void MemToGdbHex(u8* dest, const u8* src, size_t len) { | |||
| 338 | * @param src Pointer to array of output hex string characters. | 338 | * @param src Pointer to array of output hex string characters. |
| 339 | * @param len Length of src array. | 339 | * @param len Length of src array. |
| 340 | */ | 340 | */ |
| 341 | static void GdbHexToMem(u8* dest, const u8* src, size_t len) { | 341 | static void GdbHexToMem(u8* dest, const u8* src, std::size_t len) { |
| 342 | while (len-- > 0) { | 342 | while (len-- > 0) { |
| 343 | *dest++ = (HexCharToValue(src[0]) << 4) | HexCharToValue(src[1]); | 343 | *dest++ = (HexCharToValue(src[0]) << 4) | HexCharToValue(src[1]); |
| 344 | src += 2; | 344 | src += 2; |
| @@ -406,7 +406,7 @@ static u64 GdbHexToLong(const u8* src) { | |||
| 406 | /// Read a byte from the gdb client. | 406 | /// Read a byte from the gdb client. |
| 407 | static u8 ReadByte() { | 407 | static u8 ReadByte() { |
| 408 | u8 c; | 408 | u8 c; |
| 409 | size_t received_size = recv(gdbserver_socket, reinterpret_cast<char*>(&c), 1, MSG_WAITALL); | 409 | std::size_t received_size = recv(gdbserver_socket, reinterpret_cast<char*>(&c), 1, MSG_WAITALL); |
| 410 | if (received_size != 1) { | 410 | if (received_size != 1) { |
| 411 | LOG_ERROR(Debug_GDBStub, "recv failed: {}", received_size); | 411 | LOG_ERROR(Debug_GDBStub, "recv failed: {}", received_size); |
| 412 | Shutdown(); | 412 | Shutdown(); |
| @@ -416,7 +416,7 @@ static u8 ReadByte() { | |||
| 416 | } | 416 | } |
| 417 | 417 | ||
| 418 | /// Calculate the checksum of the current command buffer. | 418 | /// Calculate the checksum of the current command buffer. |
| 419 | static u8 CalculateChecksum(const u8* buffer, size_t length) { | 419 | static u8 CalculateChecksum(const u8* buffer, std::size_t length) { |
| 420 | return static_cast<u8>(std::accumulate(buffer, buffer + length, 0, std::plus<u8>())); | 420 | return static_cast<u8>(std::accumulate(buffer, buffer + length, 0, std::plus<u8>())); |
| 421 | } | 421 | } |
| 422 | 422 | ||
| @@ -518,7 +518,7 @@ bool CheckBreakpoint(VAddr addr, BreakpointType type) { | |||
| 518 | * @param packet Packet to be sent to client. | 518 | * @param packet Packet to be sent to client. |
| 519 | */ | 519 | */ |
| 520 | static void SendPacket(const char packet) { | 520 | static void SendPacket(const char packet) { |
| 521 | size_t sent_size = send(gdbserver_socket, &packet, 1, 0); | 521 | std::size_t sent_size = send(gdbserver_socket, &packet, 1, 0); |
| 522 | if (sent_size != 1) { | 522 | if (sent_size != 1) { |
| 523 | LOG_ERROR(Debug_GDBStub, "send failed"); | 523 | LOG_ERROR(Debug_GDBStub, "send failed"); |
| 524 | } | 524 | } |
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h index 545cd884a..419f45896 100644 --- a/src/core/hle/ipc.h +++ b/src/core/hle/ipc.h | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | namespace IPC { | 12 | namespace IPC { |
| 13 | 13 | ||
| 14 | /// Size of the command buffer area, in 32-bit words. | 14 | /// Size of the command buffer area, in 32-bit words. |
| 15 | constexpr size_t COMMAND_BUFFER_LENGTH = 0x100 / sizeof(u32); | 15 | constexpr std::size_t COMMAND_BUFFER_LENGTH = 0x100 / sizeof(u32); |
| 16 | 16 | ||
| 17 | // These errors are commonly returned by invalid IPC translations, so alias them here for | 17 | // These errors are commonly returned by invalid IPC translations, so alias them here for |
| 18 | // convenience. | 18 | // convenience. |
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index 0f3ffdb60..7545ecf2a 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h | |||
| @@ -152,8 +152,8 @@ public: | |||
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | void ValidateHeader() { | 154 | void ValidateHeader() { |
| 155 | const size_t num_domain_objects = context->NumDomainObjects(); | 155 | const std::size_t num_domain_objects = context->NumDomainObjects(); |
| 156 | const size_t num_move_objects = context->NumMoveObjects(); | 156 | const std::size_t num_move_objects = context->NumMoveObjects(); |
| 157 | ASSERT_MSG(!num_domain_objects || !num_move_objects, | 157 | ASSERT_MSG(!num_domain_objects || !num_move_objects, |
| 158 | "cannot move normal handles and domain objects"); | 158 | "cannot move normal handles and domain objects"); |
| 159 | ASSERT_MSG((index - datapayload_index) == normal_params_size, | 159 | ASSERT_MSG((index - datapayload_index) == normal_params_size, |
| @@ -329,10 +329,10 @@ public: | |||
| 329 | T PopRaw(); | 329 | T PopRaw(); |
| 330 | 330 | ||
| 331 | template <typename T> | 331 | template <typename T> |
| 332 | Kernel::SharedPtr<T> GetMoveObject(size_t index); | 332 | Kernel::SharedPtr<T> GetMoveObject(std::size_t index); |
| 333 | 333 | ||
| 334 | template <typename T> | 334 | template <typename T> |
| 335 | Kernel::SharedPtr<T> GetCopyObject(size_t index); | 335 | Kernel::SharedPtr<T> GetCopyObject(std::size_t index); |
| 336 | 336 | ||
| 337 | template <class T> | 337 | template <class T> |
| 338 | std::shared_ptr<T> PopIpcInterface() { | 338 | std::shared_ptr<T> PopIpcInterface() { |
| @@ -406,12 +406,12 @@ void RequestParser::Pop(First& first_value, Other&... other_values) { | |||
| 406 | } | 406 | } |
| 407 | 407 | ||
| 408 | template <typename T> | 408 | template <typename T> |
| 409 | Kernel::SharedPtr<T> RequestParser::GetMoveObject(size_t index) { | 409 | Kernel::SharedPtr<T> RequestParser::GetMoveObject(std::size_t index) { |
| 410 | return context->GetMoveObject<T>(index); | 410 | return context->GetMoveObject<T>(index); |
| 411 | } | 411 | } |
| 412 | 412 | ||
| 413 | template <typename T> | 413 | template <typename T> |
| 414 | Kernel::SharedPtr<T> RequestParser::GetCopyObject(size_t index) { | 414 | Kernel::SharedPtr<T> RequestParser::GetCopyObject(std::size_t index) { |
| 415 | return context->GetCopyObject<T>(index); | 415 | return context->GetCopyObject<T>(index); |
| 416 | } | 416 | } |
| 417 | 417 | ||
diff --git a/src/core/hle/kernel/address_arbiter.cpp b/src/core/hle/kernel/address_arbiter.cpp index 6657accd5..93577591f 100644 --- a/src/core/hle/kernel/address_arbiter.cpp +++ b/src/core/hle/kernel/address_arbiter.cpp | |||
| @@ -35,16 +35,17 @@ static ResultCode WaitForAddress(VAddr address, s64 timeout) { | |||
| 35 | 35 | ||
| 36 | // Gets the threads waiting on an address. | 36 | // Gets the threads waiting on an address. |
| 37 | static std::vector<SharedPtr<Thread>> GetThreadsWaitingOnAddress(VAddr address) { | 37 | static std::vector<SharedPtr<Thread>> GetThreadsWaitingOnAddress(VAddr address) { |
| 38 | const auto RetrieveWaitingThreads = | 38 | const auto RetrieveWaitingThreads = [](std::size_t core_index, |
| 39 | [](size_t core_index, std::vector<SharedPtr<Thread>>& waiting_threads, VAddr arb_addr) { | 39 | std::vector<SharedPtr<Thread>>& waiting_threads, |
| 40 | const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); | 40 | VAddr arb_addr) { |
| 41 | auto& thread_list = scheduler->GetThreadList(); | 41 | const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); |
| 42 | 42 | auto& thread_list = scheduler->GetThreadList(); | |
| 43 | for (auto& thread : thread_list) { | 43 | |
| 44 | if (thread->arb_wait_address == arb_addr) | 44 | for (auto& thread : thread_list) { |
| 45 | waiting_threads.push_back(thread); | 45 | if (thread->arb_wait_address == arb_addr) |
| 46 | } | 46 | waiting_threads.push_back(thread); |
| 47 | }; | 47 | } |
| 48 | }; | ||
| 48 | 49 | ||
| 49 | // Retrieve all threads that are waiting for this address. | 50 | // Retrieve all threads that are waiting for this address. |
| 50 | std::vector<SharedPtr<Thread>> threads; | 51 | std::vector<SharedPtr<Thread>> threads; |
| @@ -66,12 +67,12 @@ static std::vector<SharedPtr<Thread>> GetThreadsWaitingOnAddress(VAddr address) | |||
| 66 | static void WakeThreads(std::vector<SharedPtr<Thread>>& waiting_threads, s32 num_to_wake) { | 67 | static void WakeThreads(std::vector<SharedPtr<Thread>>& waiting_threads, s32 num_to_wake) { |
| 67 | // Only process up to 'target' threads, unless 'target' is <= 0, in which case process | 68 | // Only process up to 'target' threads, unless 'target' is <= 0, in which case process |
| 68 | // them all. | 69 | // them all. |
| 69 | size_t last = waiting_threads.size(); | 70 | std::size_t last = waiting_threads.size(); |
| 70 | if (num_to_wake > 0) | 71 | if (num_to_wake > 0) |
| 71 | last = num_to_wake; | 72 | last = num_to_wake; |
| 72 | 73 | ||
| 73 | // Signal the waiting threads. | 74 | // Signal the waiting threads. |
| 74 | for (size_t i = 0; i < last; i++) { | 75 | for (std::size_t i = 0; i < last; i++) { |
| 75 | ASSERT(waiting_threads[i]->status == ThreadStatus::WaitArb); | 76 | ASSERT(waiting_threads[i]->status == ThreadStatus::WaitArb); |
| 76 | waiting_threads[i]->SetWaitSynchronizationResult(RESULT_SUCCESS); | 77 | waiting_threads[i]->SetWaitSynchronizationResult(RESULT_SUCCESS); |
| 77 | waiting_threads[i]->arb_wait_address = 0; | 78 | waiting_threads[i]->arb_wait_address = 0; |
diff --git a/src/core/hle/kernel/handle_table.cpp b/src/core/hle/kernel/handle_table.cpp index 3a079b9a9..5ee5c05e3 100644 --- a/src/core/hle/kernel/handle_table.cpp +++ b/src/core/hle/kernel/handle_table.cpp | |||
| @@ -65,7 +65,7 @@ ResultCode HandleTable::Close(Handle handle) { | |||
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | bool HandleTable::IsValid(Handle handle) const { | 67 | bool HandleTable::IsValid(Handle handle) const { |
| 68 | size_t slot = GetSlot(handle); | 68 | std::size_t slot = GetSlot(handle); |
| 69 | u16 generation = GetGeneration(handle); | 69 | u16 generation = GetGeneration(handle); |
| 70 | 70 | ||
| 71 | return slot < MAX_COUNT && objects[slot] != nullptr && generations[slot] == generation; | 71 | return slot < MAX_COUNT && objects[slot] != nullptr && generations[slot] == generation; |
diff --git a/src/core/hle/kernel/handle_table.h b/src/core/hle/kernel/handle_table.h index cac928adb..9e2f33e8a 100644 --- a/src/core/hle/kernel/handle_table.h +++ b/src/core/hle/kernel/handle_table.h | |||
| @@ -93,7 +93,7 @@ private: | |||
| 93 | * This is the maximum limit of handles allowed per process in CTR-OS. It can be further | 93 | * This is the maximum limit of handles allowed per process in CTR-OS. It can be further |
| 94 | * reduced by ExHeader values, but this is not emulated here. | 94 | * reduced by ExHeader values, but this is not emulated here. |
| 95 | */ | 95 | */ |
| 96 | static const size_t MAX_COUNT = 4096; | 96 | static const std::size_t MAX_COUNT = 4096; |
| 97 | 97 | ||
| 98 | static u16 GetSlot(Handle handle) { | 98 | static u16 GetSlot(Handle handle) { |
| 99 | return handle >> 15; | 99 | return handle >> 15; |
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 7264be906..72fb9d250 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp | |||
| @@ -42,9 +42,9 @@ SharedPtr<Event> HLERequestContext::SleepClientThread(SharedPtr<Thread> thread, | |||
| 42 | Kernel::SharedPtr<Kernel::Event> event) { | 42 | Kernel::SharedPtr<Kernel::Event> event) { |
| 43 | 43 | ||
| 44 | // Put the client thread to sleep until the wait event is signaled or the timeout expires. | 44 | // Put the client thread to sleep until the wait event is signaled or the timeout expires. |
| 45 | thread->wakeup_callback = | 45 | thread->wakeup_callback = [context = *this, callback]( |
| 46 | [context = *this, callback](ThreadWakeupReason reason, SharedPtr<Thread> thread, | 46 | ThreadWakeupReason reason, SharedPtr<Thread> thread, |
| 47 | SharedPtr<WaitObject> object, size_t index) mutable -> bool { | 47 | SharedPtr<WaitObject> object, std::size_t index) mutable -> bool { |
| 48 | ASSERT(thread->status == ThreadStatus::WaitHLEEvent); | 48 | ASSERT(thread->status == ThreadStatus::WaitHLEEvent); |
| 49 | callback(thread, context, reason); | 49 | callback(thread, context, reason); |
| 50 | context.WriteToOutgoingCommandBuffer(*thread); | 50 | context.WriteToOutgoingCommandBuffer(*thread); |
| @@ -199,8 +199,8 @@ ResultCode HLERequestContext::PopulateFromIncomingCommandBuffer(u32_le* src_cmdb | |||
| 199 | } | 199 | } |
| 200 | 200 | ||
| 201 | // The data_size already includes the payload header, the padding and the domain header. | 201 | // The data_size already includes the payload header, the padding and the domain header. |
| 202 | size_t size = data_payload_offset + command_header->data_size - | 202 | std::size_t size = data_payload_offset + command_header->data_size - |
| 203 | sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; | 203 | sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; |
| 204 | if (domain_message_header) | 204 | if (domain_message_header) |
| 205 | size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32); | 205 | size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32); |
| 206 | std::copy_n(src_cmdbuf, size, cmd_buf.begin()); | 206 | std::copy_n(src_cmdbuf, size, cmd_buf.begin()); |
| @@ -217,8 +217,8 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(const Thread& thread) | |||
| 217 | ParseCommandBuffer(cmd_buf.data(), false); | 217 | ParseCommandBuffer(cmd_buf.data(), false); |
| 218 | 218 | ||
| 219 | // The data_size already includes the payload header, the padding and the domain header. | 219 | // The data_size already includes the payload header, the padding and the domain header. |
| 220 | size_t size = data_payload_offset + command_header->data_size - | 220 | std::size_t size = data_payload_offset + command_header->data_size - |
| 221 | sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; | 221 | sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; |
| 222 | if (domain_message_header) | 222 | if (domain_message_header) |
| 223 | size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32); | 223 | size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32); |
| 224 | 224 | ||
| @@ -229,7 +229,7 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(const Thread& thread) | |||
| 229 | "Handle descriptor bit set but no handles to translate"); | 229 | "Handle descriptor bit set but no handles to translate"); |
| 230 | // We write the translated handles at a specific offset in the command buffer, this space | 230 | // We write the translated handles at a specific offset in the command buffer, this space |
| 231 | // was already reserved when writing the header. | 231 | // was already reserved when writing the header. |
| 232 | size_t current_offset = | 232 | std::size_t current_offset = |
| 233 | (sizeof(IPC::CommandHeader) + sizeof(IPC::HandleDescriptorHeader)) / sizeof(u32); | 233 | (sizeof(IPC::CommandHeader) + sizeof(IPC::HandleDescriptorHeader)) / sizeof(u32); |
| 234 | ASSERT_MSG(!handle_descriptor_header->send_current_pid, "Sending PID is not implemented"); | 234 | ASSERT_MSG(!handle_descriptor_header->send_current_pid, "Sending PID is not implemented"); |
| 235 | 235 | ||
| @@ -258,7 +258,7 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(const Thread& thread) | |||
| 258 | ASSERT(domain_message_header->num_objects == domain_objects.size()); | 258 | ASSERT(domain_message_header->num_objects == domain_objects.size()); |
| 259 | // Write the domain objects to the command buffer, these go after the raw untranslated data. | 259 | // Write the domain objects to the command buffer, these go after the raw untranslated data. |
| 260 | // TODO(Subv): This completely ignores C buffers. | 260 | // TODO(Subv): This completely ignores C buffers. |
| 261 | size_t domain_offset = size - domain_message_header->num_objects; | 261 | std::size_t domain_offset = size - domain_message_header->num_objects; |
| 262 | auto& request_handlers = server_session->domain_request_handlers; | 262 | auto& request_handlers = server_session->domain_request_handlers; |
| 263 | 263 | ||
| 264 | for (auto& object : domain_objects) { | 264 | for (auto& object : domain_objects) { |
| @@ -291,14 +291,15 @@ std::vector<u8> HLERequestContext::ReadBuffer(int buffer_index) const { | |||
| 291 | return buffer; | 291 | return buffer; |
| 292 | } | 292 | } |
| 293 | 293 | ||
| 294 | size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size, int buffer_index) const { | 294 | std::size_t HLERequestContext::WriteBuffer(const void* buffer, std::size_t size, |
| 295 | int buffer_index) const { | ||
| 295 | if (size == 0) { | 296 | if (size == 0) { |
| 296 | LOG_WARNING(Core, "skip empty buffer write"); | 297 | LOG_WARNING(Core, "skip empty buffer write"); |
| 297 | return 0; | 298 | return 0; |
| 298 | } | 299 | } |
| 299 | 300 | ||
| 300 | const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()}; | 301 | const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()}; |
| 301 | const size_t buffer_size{GetWriteBufferSize(buffer_index)}; | 302 | const std::size_t buffer_size{GetWriteBufferSize(buffer_index)}; |
| 302 | if (size > buffer_size) { | 303 | if (size > buffer_size) { |
| 303 | LOG_CRITICAL(Core, "size ({:016X}) is greater than buffer_size ({:016X})", size, | 304 | LOG_CRITICAL(Core, "size ({:016X}) is greater than buffer_size ({:016X})", size, |
| 304 | buffer_size); | 305 | buffer_size); |
| @@ -314,13 +315,13 @@ size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size, int buffe | |||
| 314 | return size; | 315 | return size; |
| 315 | } | 316 | } |
| 316 | 317 | ||
| 317 | size_t HLERequestContext::GetReadBufferSize(int buffer_index) const { | 318 | std::size_t HLERequestContext::GetReadBufferSize(int buffer_index) const { |
| 318 | const bool is_buffer_a{BufferDescriptorA().size() && BufferDescriptorA()[buffer_index].Size()}; | 319 | const bool is_buffer_a{BufferDescriptorA().size() && BufferDescriptorA()[buffer_index].Size()}; |
| 319 | return is_buffer_a ? BufferDescriptorA()[buffer_index].Size() | 320 | return is_buffer_a ? BufferDescriptorA()[buffer_index].Size() |
| 320 | : BufferDescriptorX()[buffer_index].Size(); | 321 | : BufferDescriptorX()[buffer_index].Size(); |
| 321 | } | 322 | } |
| 322 | 323 | ||
| 323 | size_t HLERequestContext::GetWriteBufferSize(int buffer_index) const { | 324 | std::size_t HLERequestContext::GetWriteBufferSize(int buffer_index) const { |
| 324 | const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()}; | 325 | const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()}; |
| 325 | return is_buffer_b ? BufferDescriptorB()[buffer_index].Size() | 326 | return is_buffer_b ? BufferDescriptorB()[buffer_index].Size() |
| 326 | : BufferDescriptorC()[buffer_index].Size(); | 327 | : BufferDescriptorC()[buffer_index].Size(); |
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h index f0d07f1b6..894479ee0 100644 --- a/src/core/hle/kernel/hle_ipc.h +++ b/src/core/hle/kernel/hle_ipc.h | |||
| @@ -170,7 +170,7 @@ public: | |||
| 170 | std::vector<u8> ReadBuffer(int buffer_index = 0) const; | 170 | std::vector<u8> ReadBuffer(int buffer_index = 0) const; |
| 171 | 171 | ||
| 172 | /// Helper function to write a buffer using the appropriate buffer descriptor | 172 | /// Helper function to write a buffer using the appropriate buffer descriptor |
| 173 | size_t WriteBuffer(const void* buffer, size_t size, int buffer_index = 0) const; | 173 | std::size_t WriteBuffer(const void* buffer, std::size_t size, int buffer_index = 0) const; |
| 174 | 174 | ||
| 175 | /* Helper function to write a buffer using the appropriate buffer descriptor | 175 | /* Helper function to write a buffer using the appropriate buffer descriptor |
| 176 | * | 176 | * |
| @@ -182,7 +182,7 @@ public: | |||
| 182 | */ | 182 | */ |
| 183 | template <typename ContiguousContainer, | 183 | template <typename ContiguousContainer, |
| 184 | typename = std::enable_if_t<!std::is_pointer_v<ContiguousContainer>>> | 184 | typename = std::enable_if_t<!std::is_pointer_v<ContiguousContainer>>> |
| 185 | size_t WriteBuffer(const ContiguousContainer& container, int buffer_index = 0) const { | 185 | std::size_t WriteBuffer(const ContiguousContainer& container, int buffer_index = 0) const { |
| 186 | using ContiguousType = typename ContiguousContainer::value_type; | 186 | using ContiguousType = typename ContiguousContainer::value_type; |
| 187 | 187 | ||
| 188 | static_assert(std::is_trivially_copyable_v<ContiguousType>, | 188 | static_assert(std::is_trivially_copyable_v<ContiguousType>, |
| @@ -193,19 +193,19 @@ public: | |||
| 193 | } | 193 | } |
| 194 | 194 | ||
| 195 | /// Helper function to get the size of the input buffer | 195 | /// Helper function to get the size of the input buffer |
| 196 | size_t GetReadBufferSize(int buffer_index = 0) const; | 196 | std::size_t GetReadBufferSize(int buffer_index = 0) const; |
| 197 | 197 | ||
| 198 | /// Helper function to get the size of the output buffer | 198 | /// Helper function to get the size of the output buffer |
| 199 | size_t GetWriteBufferSize(int buffer_index = 0) const; | 199 | std::size_t GetWriteBufferSize(int buffer_index = 0) const; |
| 200 | 200 | ||
| 201 | template <typename T> | 201 | template <typename T> |
| 202 | SharedPtr<T> GetCopyObject(size_t index) { | 202 | SharedPtr<T> GetCopyObject(std::size_t index) { |
| 203 | ASSERT(index < copy_objects.size()); | 203 | ASSERT(index < copy_objects.size()); |
| 204 | return DynamicObjectCast<T>(copy_objects[index]); | 204 | return DynamicObjectCast<T>(copy_objects[index]); |
| 205 | } | 205 | } |
| 206 | 206 | ||
| 207 | template <typename T> | 207 | template <typename T> |
| 208 | SharedPtr<T> GetMoveObject(size_t index) { | 208 | SharedPtr<T> GetMoveObject(std::size_t index) { |
| 209 | ASSERT(index < move_objects.size()); | 209 | ASSERT(index < move_objects.size()); |
| 210 | return DynamicObjectCast<T>(move_objects[index]); | 210 | return DynamicObjectCast<T>(move_objects[index]); |
| 211 | } | 211 | } |
| @@ -223,7 +223,7 @@ public: | |||
| 223 | } | 223 | } |
| 224 | 224 | ||
| 225 | template <typename T> | 225 | template <typename T> |
| 226 | std::shared_ptr<T> GetDomainRequestHandler(size_t index) const { | 226 | std::shared_ptr<T> GetDomainRequestHandler(std::size_t index) const { |
| 227 | return std::static_pointer_cast<T>(domain_request_handlers[index]); | 227 | return std::static_pointer_cast<T>(domain_request_handlers[index]); |
| 228 | } | 228 | } |
| 229 | 229 | ||
| @@ -240,15 +240,15 @@ public: | |||
| 240 | domain_objects.clear(); | 240 | domain_objects.clear(); |
| 241 | } | 241 | } |
| 242 | 242 | ||
| 243 | size_t NumMoveObjects() const { | 243 | std::size_t NumMoveObjects() const { |
| 244 | return move_objects.size(); | 244 | return move_objects.size(); |
| 245 | } | 245 | } |
| 246 | 246 | ||
| 247 | size_t NumCopyObjects() const { | 247 | std::size_t NumCopyObjects() const { |
| 248 | return copy_objects.size(); | 248 | return copy_objects.size(); |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | size_t NumDomainObjects() const { | 251 | std::size_t NumDomainObjects() const { |
| 252 | return domain_objects.size(); | 252 | return domain_objects.size(); |
| 253 | } | 253 | } |
| 254 | 254 | ||
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp index b025e323f..7a272d031 100644 --- a/src/core/hle/kernel/process.cpp +++ b/src/core/hle/kernel/process.cpp | |||
| @@ -40,8 +40,8 @@ SharedPtr<Process> Process::Create(KernelCore& kernel, std::string&& name) { | |||
| 40 | return process; | 40 | return process; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | void Process::ParseKernelCaps(const u32* kernel_caps, size_t len) { | 43 | void Process::ParseKernelCaps(const u32* kernel_caps, std::size_t len) { |
| 44 | for (size_t i = 0; i < len; ++i) { | 44 | for (std::size_t i = 0; i < len; ++i) { |
| 45 | u32 descriptor = kernel_caps[i]; | 45 | u32 descriptor = kernel_caps[i]; |
| 46 | u32 type = descriptor >> 20; | 46 | u32 type = descriptor >> 20; |
| 47 | 47 | ||
| @@ -211,7 +211,7 @@ ResultCode Process::MirrorMemory(VAddr dst_addr, VAddr src_addr, u64 size) { | |||
| 211 | "Shared memory exceeds bounds of mapped block"); | 211 | "Shared memory exceeds bounds of mapped block"); |
| 212 | 212 | ||
| 213 | const std::shared_ptr<std::vector<u8>>& backing_block = vma->second.backing_block; | 213 | const std::shared_ptr<std::vector<u8>>& backing_block = vma->second.backing_block; |
| 214 | size_t backing_block_offset = vma->second.offset + vma_offset; | 214 | std::size_t backing_block_offset = vma->second.offset + vma_offset; |
| 215 | 215 | ||
| 216 | CASCADE_RESULT(auto new_vma, | 216 | CASCADE_RESULT(auto new_vma, |
| 217 | vm_manager.MapMemoryBlock(dst_addr, backing_block, backing_block_offset, size, | 217 | vm_manager.MapMemoryBlock(dst_addr, backing_block, backing_block_offset, size, |
diff --git a/src/core/hle/kernel/process.h b/src/core/hle/kernel/process.h index 1587d40c1..81538f70c 100644 --- a/src/core/hle/kernel/process.h +++ b/src/core/hle/kernel/process.h | |||
| @@ -59,7 +59,7 @@ class ResourceLimit; | |||
| 59 | 59 | ||
| 60 | struct CodeSet final : public Object { | 60 | struct CodeSet final : public Object { |
| 61 | struct Segment { | 61 | struct Segment { |
| 62 | size_t offset = 0; | 62 | std::size_t offset = 0; |
| 63 | VAddr addr = 0; | 63 | VAddr addr = 0; |
| 64 | u32 size = 0; | 64 | u32 size = 0; |
| 65 | }; | 65 | }; |
| @@ -164,7 +164,7 @@ public: | |||
| 164 | * Parses a list of kernel capability descriptors (as found in the ExHeader) and applies them | 164 | * Parses a list of kernel capability descriptors (as found in the ExHeader) and applies them |
| 165 | * to this process. | 165 | * to this process. |
| 166 | */ | 166 | */ |
| 167 | void ParseKernelCaps(const u32* kernel_caps, size_t len); | 167 | void ParseKernelCaps(const u32* kernel_caps, std::size_t len); |
| 168 | 168 | ||
| 169 | /** | 169 | /** |
| 170 | * Applies address space changes and launches the process main thread. | 170 | * Applies address space changes and launches the process main thread. |
diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h index 2c729afe3..2c06bb7ce 100644 --- a/src/core/hle/kernel/shared_memory.h +++ b/src/core/hle/kernel/shared_memory.h | |||
| @@ -119,7 +119,7 @@ public: | |||
| 119 | /// Backing memory for this shared memory block. | 119 | /// Backing memory for this shared memory block. |
| 120 | std::shared_ptr<std::vector<u8>> backing_block; | 120 | std::shared_ptr<std::vector<u8>> backing_block; |
| 121 | /// Offset into the backing block for this shared memory. | 121 | /// Offset into the backing block for this shared memory. |
| 122 | size_t backing_block_offset; | 122 | std::size_t backing_block_offset; |
| 123 | /// Size of the memory block. Page-aligned. | 123 | /// Size of the memory block. Page-aligned. |
| 124 | u64 size; | 124 | u64 size; |
| 125 | /// Permission restrictions applied to the process which created the block. | 125 | /// Permission restrictions applied to the process which created the block. |
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index f500fd2e7..a5aaa089d 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -146,7 +146,7 @@ static ResultCode GetProcessId(u32* process_id, Handle process_handle) { | |||
| 146 | 146 | ||
| 147 | /// Default thread wakeup callback for WaitSynchronization | 147 | /// Default thread wakeup callback for WaitSynchronization |
| 148 | static bool DefaultThreadWakeupCallback(ThreadWakeupReason reason, SharedPtr<Thread> thread, | 148 | static bool DefaultThreadWakeupCallback(ThreadWakeupReason reason, SharedPtr<Thread> thread, |
| 149 | SharedPtr<WaitObject> object, size_t index) { | 149 | SharedPtr<WaitObject> object, std::size_t index) { |
| 150 | ASSERT(thread->status == ThreadStatus::WaitSynchAny); | 150 | ASSERT(thread->status == ThreadStatus::WaitSynchAny); |
| 151 | 151 | ||
| 152 | if (reason == ThreadWakeupReason::Timeout) { | 152 | if (reason == ThreadWakeupReason::Timeout) { |
| @@ -647,16 +647,17 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target | |||
| 647 | LOG_TRACE(Kernel_SVC, "called, condition_variable_addr=0x{:X}, target=0x{:08X}", | 647 | LOG_TRACE(Kernel_SVC, "called, condition_variable_addr=0x{:X}, target=0x{:08X}", |
| 648 | condition_variable_addr, target); | 648 | condition_variable_addr, target); |
| 649 | 649 | ||
| 650 | auto RetrieveWaitingThreads = | 650 | auto RetrieveWaitingThreads = [](std::size_t core_index, |
| 651 | [](size_t core_index, std::vector<SharedPtr<Thread>>& waiting_threads, VAddr condvar_addr) { | 651 | std::vector<SharedPtr<Thread>>& waiting_threads, |
| 652 | const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); | 652 | VAddr condvar_addr) { |
| 653 | auto& thread_list = scheduler->GetThreadList(); | 653 | const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); |
| 654 | auto& thread_list = scheduler->GetThreadList(); | ||
| 654 | 655 | ||
| 655 | for (auto& thread : thread_list) { | 656 | for (auto& thread : thread_list) { |
| 656 | if (thread->condvar_wait_address == condvar_addr) | 657 | if (thread->condvar_wait_address == condvar_addr) |
| 657 | waiting_threads.push_back(thread); | 658 | waiting_threads.push_back(thread); |
| 658 | } | 659 | } |
| 659 | }; | 660 | }; |
| 660 | 661 | ||
| 661 | // Retrieve a list of all threads that are waiting for this condition variable. | 662 | // Retrieve a list of all threads that are waiting for this condition variable. |
| 662 | std::vector<SharedPtr<Thread>> waiting_threads; | 663 | std::vector<SharedPtr<Thread>> waiting_threads; |
| @@ -672,7 +673,7 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target | |||
| 672 | 673 | ||
| 673 | // Only process up to 'target' threads, unless 'target' is -1, in which case process | 674 | // Only process up to 'target' threads, unless 'target' is -1, in which case process |
| 674 | // them all. | 675 | // them all. |
| 675 | size_t last = waiting_threads.size(); | 676 | std::size_t last = waiting_threads.size(); |
| 676 | if (target != -1) | 677 | if (target != -1) |
| 677 | last = target; | 678 | last = target; |
| 678 | 679 | ||
| @@ -680,12 +681,12 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target | |||
| 680 | if (last > waiting_threads.size()) | 681 | if (last > waiting_threads.size()) |
| 681 | return RESULT_SUCCESS; | 682 | return RESULT_SUCCESS; |
| 682 | 683 | ||
| 683 | for (size_t index = 0; index < last; ++index) { | 684 | for (std::size_t index = 0; index < last; ++index) { |
| 684 | auto& thread = waiting_threads[index]; | 685 | auto& thread = waiting_threads[index]; |
| 685 | 686 | ||
| 686 | ASSERT(thread->condvar_wait_address == condition_variable_addr); | 687 | ASSERT(thread->condvar_wait_address == condition_variable_addr); |
| 687 | 688 | ||
| 688 | size_t current_core = Core::System::GetInstance().CurrentCoreIndex(); | 689 | std::size_t current_core = Core::System::GetInstance().CurrentCoreIndex(); |
| 689 | 690 | ||
| 690 | auto& monitor = Core::System::GetInstance().Monitor(); | 691 | auto& monitor = Core::System::GetInstance().Monitor(); |
| 691 | 692 | ||
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 3f12a84dc..89cd5f401 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -275,7 +275,7 @@ ResultVal<SharedPtr<Thread>> Thread::Create(KernelCore& kernel, std::string name | |||
| 275 | available_slot = 0; // Use the first slot in the new page | 275 | available_slot = 0; // Use the first slot in the new page |
| 276 | 276 | ||
| 277 | // Allocate some memory from the end of the linear heap for this region. | 277 | // Allocate some memory from the end of the linear heap for this region. |
| 278 | const size_t offset = thread->tls_memory->size(); | 278 | const std::size_t offset = thread->tls_memory->size(); |
| 279 | thread->tls_memory->insert(thread->tls_memory->end(), Memory::PAGE_SIZE, 0); | 279 | thread->tls_memory->insert(thread->tls_memory->end(), Memory::PAGE_SIZE, 0); |
| 280 | 280 | ||
| 281 | auto& vm_manager = owner_process->vm_manager; | 281 | auto& vm_manager = owner_process->vm_manager; |
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index cb57ee78a..df4748942 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h | |||
| @@ -254,7 +254,7 @@ public: | |||
| 254 | Handle callback_handle; | 254 | Handle callback_handle; |
| 255 | 255 | ||
| 256 | using WakeupCallback = bool(ThreadWakeupReason reason, SharedPtr<Thread> thread, | 256 | using WakeupCallback = bool(ThreadWakeupReason reason, SharedPtr<Thread> thread, |
| 257 | SharedPtr<WaitObject> object, size_t index); | 257 | SharedPtr<WaitObject> object, std::size_t index); |
| 258 | // Callback that will be invoked when the thread is resumed from a waiting state. If the thread | 258 | // Callback that will be invoked when the thread is resumed from a waiting state. If the thread |
| 259 | // was waiting via WaitSynchronizationN then the object will be the last object that became | 259 | // was waiting via WaitSynchronizationN then the object will be the last object that became |
| 260 | // available. In case of a timeout, the object will be nullptr. | 260 | // available. In case of a timeout, the object will be nullptr. |
diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp index 479cacb62..608cbd57b 100644 --- a/src/core/hle/kernel/vm_manager.cpp +++ b/src/core/hle/kernel/vm_manager.cpp | |||
| @@ -86,7 +86,7 @@ VMManager::VMAHandle VMManager::FindVMA(VAddr target) const { | |||
| 86 | 86 | ||
| 87 | ResultVal<VMManager::VMAHandle> VMManager::MapMemoryBlock(VAddr target, | 87 | ResultVal<VMManager::VMAHandle> VMManager::MapMemoryBlock(VAddr target, |
| 88 | std::shared_ptr<std::vector<u8>> block, | 88 | std::shared_ptr<std::vector<u8>> block, |
| 89 | size_t offset, u64 size, | 89 | std::size_t offset, u64 size, |
| 90 | MemoryState state) { | 90 | MemoryState state) { |
| 91 | ASSERT(block != nullptr); | 91 | ASSERT(block != nullptr); |
| 92 | ASSERT(offset + size <= block->size()); | 92 | ASSERT(offset + size <= block->size()); |
diff --git a/src/core/hle/kernel/vm_manager.h b/src/core/hle/kernel/vm_manager.h index 98bd04bea..de75036c0 100644 --- a/src/core/hle/kernel/vm_manager.h +++ b/src/core/hle/kernel/vm_manager.h | |||
| @@ -81,7 +81,7 @@ struct VirtualMemoryArea { | |||
| 81 | /// Memory block backing this VMA. | 81 | /// Memory block backing this VMA. |
| 82 | std::shared_ptr<std::vector<u8>> backing_block = nullptr; | 82 | std::shared_ptr<std::vector<u8>> backing_block = nullptr; |
| 83 | /// Offset into the backing_memory the mapping starts from. | 83 | /// Offset into the backing_memory the mapping starts from. |
| 84 | size_t offset = 0; | 84 | std::size_t offset = 0; |
| 85 | 85 | ||
| 86 | // Settings for type = BackingMemory | 86 | // Settings for type = BackingMemory |
| 87 | /// Pointer backing this VMA. It will not be destroyed or freed when the VMA is removed. | 87 | /// Pointer backing this VMA. It will not be destroyed or freed when the VMA is removed. |
| @@ -147,7 +147,7 @@ public: | |||
| 147 | * @param state MemoryState tag to attach to the VMA. | 147 | * @param state MemoryState tag to attach to the VMA. |
| 148 | */ | 148 | */ |
| 149 | ResultVal<VMAHandle> MapMemoryBlock(VAddr target, std::shared_ptr<std::vector<u8>> block, | 149 | ResultVal<VMAHandle> MapMemoryBlock(VAddr target, std::shared_ptr<std::vector<u8>> block, |
| 150 | size_t offset, u64 size, MemoryState state); | 150 | std::size_t offset, u64 size, MemoryState state); |
| 151 | 151 | ||
| 152 | /** | 152 | /** |
| 153 | * Maps an unmanaged host memory pointer at a given address. | 153 | * Maps an unmanaged host memory pointer at a given address. |
diff --git a/src/core/hle/kernel/wait_object.cpp b/src/core/hle/kernel/wait_object.cpp index eef00b729..b190ceb98 100644 --- a/src/core/hle/kernel/wait_object.cpp +++ b/src/core/hle/kernel/wait_object.cpp | |||
| @@ -81,7 +81,7 @@ void WaitObject::WakeupWaitingThread(SharedPtr<Thread> thread) { | |||
| 81 | } | 81 | } |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | size_t index = thread->GetWaitObjectIndex(this); | 84 | std::size_t index = thread->GetWaitObjectIndex(this); |
| 85 | 85 | ||
| 86 | for (auto& object : thread->wait_objects) | 86 | for (auto& object : thread->wait_objects) |
| 87 | object->RemoveWaitingThread(thread.get()); | 87 | object->RemoveWaitingThread(thread.get()); |
diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp index 4ccebef23..0071ca613 100644 --- a/src/core/hle/service/acc/profile_manager.cpp +++ b/src/core/hle/service/acc/profile_manager.cpp | |||
| @@ -33,7 +33,7 @@ ProfileManager::~ProfileManager() = default; | |||
| 33 | 33 | ||
| 34 | /// After a users creation it needs to be "registered" to the system. AddToProfiles handles the | 34 | /// After a users creation it needs to be "registered" to the system. AddToProfiles handles the |
| 35 | /// internal management of the users profiles | 35 | /// internal management of the users profiles |
| 36 | boost::optional<size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) { | 36 | boost::optional<std::size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) { |
| 37 | if (user_count >= MAX_USERS) { | 37 | if (user_count >= MAX_USERS) { |
| 38 | return boost::none; | 38 | return boost::none; |
| 39 | } | 39 | } |
| @@ -42,7 +42,7 @@ boost::optional<size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) { | |||
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | /// Deletes a specific profile based on it's profile index | 44 | /// Deletes a specific profile based on it's profile index |
| 45 | bool ProfileManager::RemoveProfileAtIndex(size_t index) { | 45 | bool ProfileManager::RemoveProfileAtIndex(std::size_t index) { |
| 46 | if (index >= MAX_USERS || index >= user_count) { | 46 | if (index >= MAX_USERS || index >= user_count) { |
| 47 | return false; | 47 | return false; |
| 48 | } | 48 | } |
| @@ -101,7 +101,7 @@ ResultCode ProfileManager::CreateNewUser(UUID uuid, const std::string& username) | |||
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | /// Returns a users profile index based on their user id. | 103 | /// Returns a users profile index based on their user id. |
| 104 | boost::optional<size_t> ProfileManager::GetUserIndex(const UUID& uuid) const { | 104 | boost::optional<std::size_t> ProfileManager::GetUserIndex(const UUID& uuid) const { |
| 105 | if (!uuid) { | 105 | if (!uuid) { |
| 106 | return boost::none; | 106 | return boost::none; |
| 107 | } | 107 | } |
| @@ -110,16 +110,17 @@ boost::optional<size_t> ProfileManager::GetUserIndex(const UUID& uuid) const { | |||
| 110 | if (iter == profiles.end()) { | 110 | if (iter == profiles.end()) { |
| 111 | return boost::none; | 111 | return boost::none; |
| 112 | } | 112 | } |
| 113 | return static_cast<size_t>(std::distance(profiles.begin(), iter)); | 113 | return static_cast<std::size_t>(std::distance(profiles.begin(), iter)); |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | /// Returns a users profile index based on their profile | 116 | /// Returns a users profile index based on their profile |
| 117 | boost::optional<size_t> ProfileManager::GetUserIndex(const ProfileInfo& user) const { | 117 | boost::optional<std::size_t> ProfileManager::GetUserIndex(const ProfileInfo& user) const { |
| 118 | return GetUserIndex(user.user_uuid); | 118 | return GetUserIndex(user.user_uuid); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | /// Returns the data structure used by the switch when GetProfileBase is called on acc:* | 121 | /// Returns the data structure used by the switch when GetProfileBase is called on acc:* |
| 122 | bool ProfileManager::GetProfileBase(boost::optional<size_t> index, ProfileBase& profile) const { | 122 | bool ProfileManager::GetProfileBase(boost::optional<std::size_t> index, |
| 123 | ProfileBase& profile) const { | ||
| 123 | if (index == boost::none || index >= MAX_USERS) { | 124 | if (index == boost::none || index >= MAX_USERS) { |
| 124 | return false; | 125 | return false; |
| 125 | } | 126 | } |
| @@ -143,14 +144,16 @@ bool ProfileManager::GetProfileBase(const ProfileInfo& user, ProfileBase& profil | |||
| 143 | 144 | ||
| 144 | /// Returns the current user count on the system. We keep a variable which tracks the count so we | 145 | /// Returns the current user count on the system. We keep a variable which tracks the count so we |
| 145 | /// don't have to loop the internal profile array every call. | 146 | /// don't have to loop the internal profile array every call. |
| 146 | size_t ProfileManager::GetUserCount() const { | 147 | |
| 148 | std::size_t ProfileManager::GetUserCount() const { | ||
| 147 | return user_count; | 149 | return user_count; |
| 148 | } | 150 | } |
| 149 | 151 | ||
| 150 | /// Lists the current "opened" users on the system. Users are typically not open until they sign | 152 | /// Lists the current "opened" users on the system. Users are typically not open until they sign |
| 151 | /// into something or pick a profile. As of right now users should all be open until qlaunch is | 153 | /// into something or pick a profile. As of right now users should all be open until qlaunch is |
| 152 | /// booting | 154 | /// booting |
| 153 | size_t ProfileManager::GetOpenUserCount() const { | 155 | |
| 156 | std::size_t ProfileManager::GetOpenUserCount() const { | ||
| 154 | return std::count_if(profiles.begin(), profiles.end(), | 157 | return std::count_if(profiles.begin(), profiles.end(), |
| 155 | [](const ProfileInfo& p) { return p.is_open; }); | 158 | [](const ProfileInfo& p) { return p.is_open; }); |
| 156 | } | 159 | } |
| @@ -206,7 +209,7 @@ UUID ProfileManager::GetLastOpenedUser() const { | |||
| 206 | } | 209 | } |
| 207 | 210 | ||
| 208 | /// Return the users profile base and the unknown arbitary data. | 211 | /// Return the users profile base and the unknown arbitary data. |
| 209 | bool ProfileManager::GetProfileBaseAndData(boost::optional<size_t> index, ProfileBase& profile, | 212 | bool ProfileManager::GetProfileBaseAndData(boost::optional<std::size_t> index, ProfileBase& profile, |
| 210 | ProfileData& data) const { | 213 | ProfileData& data) const { |
| 211 | if (GetProfileBase(index, profile)) { | 214 | if (GetProfileBase(index, profile)) { |
| 212 | data = profiles[index.get()].data; | 215 | data = profiles[index.get()].data; |
diff --git a/src/core/hle/service/acc/profile_manager.h b/src/core/hle/service/acc/profile_manager.h index cd8df93a5..bffd4cf4d 100644 --- a/src/core/hle/service/acc/profile_manager.h +++ b/src/core/hle/service/acc/profile_manager.h | |||
| @@ -12,8 +12,8 @@ | |||
| 12 | #include "core/hle/result.h" | 12 | #include "core/hle/result.h" |
| 13 | 13 | ||
| 14 | namespace Service::Account { | 14 | namespace Service::Account { |
| 15 | constexpr size_t MAX_USERS = 8; | 15 | constexpr std::size_t MAX_USERS = 8; |
| 16 | constexpr size_t MAX_DATA = 128; | 16 | constexpr std::size_t MAX_DATA = 128; |
| 17 | constexpr u128 INVALID_UUID{{0, 0}}; | 17 | constexpr u128 INVALID_UUID{{0, 0}}; |
| 18 | 18 | ||
| 19 | struct UUID { | 19 | struct UUID { |
| @@ -87,18 +87,18 @@ public: | |||
| 87 | ResultCode AddUser(const ProfileInfo& user); | 87 | ResultCode AddUser(const ProfileInfo& user); |
| 88 | ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username); | 88 | ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username); |
| 89 | ResultCode CreateNewUser(UUID uuid, const std::string& username); | 89 | ResultCode CreateNewUser(UUID uuid, const std::string& username); |
| 90 | boost::optional<size_t> GetUserIndex(const UUID& uuid) const; | 90 | boost::optional<std::size_t> GetUserIndex(const UUID& uuid) const; |
| 91 | boost::optional<size_t> GetUserIndex(const ProfileInfo& user) const; | 91 | boost::optional<std::size_t> GetUserIndex(const ProfileInfo& user) const; |
| 92 | bool GetProfileBase(boost::optional<size_t> index, ProfileBase& profile) const; | 92 | bool GetProfileBase(boost::optional<std::size_t> index, ProfileBase& profile) const; |
| 93 | bool GetProfileBase(UUID uuid, ProfileBase& profile) const; | 93 | bool GetProfileBase(UUID uuid, ProfileBase& profile) const; |
| 94 | bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const; | 94 | bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const; |
| 95 | bool GetProfileBaseAndData(boost::optional<size_t> index, ProfileBase& profile, | 95 | bool GetProfileBaseAndData(boost::optional<std::size_t> index, ProfileBase& profile, |
| 96 | ProfileData& data) const; | 96 | ProfileData& data) const; |
| 97 | bool GetProfileBaseAndData(UUID uuid, ProfileBase& profile, ProfileData& data) const; | 97 | bool GetProfileBaseAndData(UUID uuid, ProfileBase& profile, ProfileData& data) const; |
| 98 | bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, | 98 | bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, |
| 99 | ProfileData& data) const; | 99 | ProfileData& data) const; |
| 100 | size_t GetUserCount() const; | 100 | std::size_t GetUserCount() const; |
| 101 | size_t GetOpenUserCount() const; | 101 | std::size_t GetOpenUserCount() const; |
| 102 | bool UserExists(UUID uuid) const; | 102 | bool UserExists(UUID uuid) const; |
| 103 | void OpenUser(UUID uuid); | 103 | void OpenUser(UUID uuid); |
| 104 | void CloseUser(UUID uuid); | 104 | void CloseUser(UUID uuid); |
| @@ -110,9 +110,9 @@ public: | |||
| 110 | 110 | ||
| 111 | private: | 111 | private: |
| 112 | std::array<ProfileInfo, MAX_USERS> profiles{}; | 112 | std::array<ProfileInfo, MAX_USERS> profiles{}; |
| 113 | size_t user_count = 0; | 113 | std::size_t user_count = 0; |
| 114 | boost::optional<size_t> AddToProfiles(const ProfileInfo& profile); | 114 | boost::optional<std::size_t> AddToProfiles(const ProfileInfo& profile); |
| 115 | bool RemoveProfileAtIndex(size_t index); | 115 | bool RemoveProfileAtIndex(std::size_t index); |
| 116 | UUID last_opened_user{INVALID_UUID}; | 116 | UUID last_opened_user{INVALID_UUID}; |
| 117 | }; | 117 | }; |
| 118 | 118 | ||
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index a57ed3042..d1f7007ec 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp | |||
| @@ -456,7 +456,7 @@ private: | |||
| 456 | IPC::RequestParser rp{ctx}; | 456 | IPC::RequestParser rp{ctx}; |
| 457 | 457 | ||
| 458 | const u64 offset{rp.Pop<u64>()}; | 458 | const u64 offset{rp.Pop<u64>()}; |
| 459 | const size_t size{ctx.GetWriteBufferSize()}; | 459 | const std::size_t size{ctx.GetWriteBufferSize()}; |
| 460 | 460 | ||
| 461 | ASSERT(offset + size <= buffer.size()); | 461 | ASSERT(offset + size <= buffer.size()); |
| 462 | 462 | ||
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp index 668fef145..fc6067e59 100644 --- a/src/core/hle/service/audio/hwopus.cpp +++ b/src/core/hle/service/audio/hwopus.cpp | |||
| @@ -61,7 +61,7 @@ private: | |||
| 61 | 61 | ||
| 62 | bool Decoder_DecodeInterleaved(u32& consumed, u32& sample_count, const std::vector<u8>& input, | 62 | bool Decoder_DecodeInterleaved(u32& consumed, u32& sample_count, const std::vector<u8>& input, |
| 63 | std::vector<opus_int16>& output) { | 63 | std::vector<opus_int16>& output) { |
| 64 | size_t raw_output_sz = output.size() * sizeof(opus_int16); | 64 | std::size_t raw_output_sz = output.size() * sizeof(opus_int16); |
| 65 | if (sizeof(OpusHeader) > input.size()) | 65 | if (sizeof(OpusHeader) > input.size()) |
| 66 | return false; | 66 | return false; |
| 67 | OpusHeader hdr{}; | 67 | OpusHeader hdr{}; |
| @@ -96,7 +96,7 @@ private: | |||
| 96 | u32 channel_count; | 96 | u32 channel_count; |
| 97 | }; | 97 | }; |
| 98 | 98 | ||
| 99 | static size_t WorkerBufferSize(u32 channel_count) { | 99 | static std::size_t WorkerBufferSize(u32 channel_count) { |
| 100 | ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count"); | 100 | ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count"); |
| 101 | return opus_decoder_get_size(static_cast<int>(channel_count)); | 101 | return opus_decoder_get_size(static_cast<int>(channel_count)); |
| 102 | } | 102 | } |
| @@ -129,7 +129,7 @@ void HwOpus::OpenOpusDecoder(Kernel::HLERequestContext& ctx) { | |||
| 129 | "Invalid sample rate"); | 129 | "Invalid sample rate"); |
| 130 | ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count"); | 130 | ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count"); |
| 131 | 131 | ||
| 132 | size_t worker_sz = WorkerBufferSize(channel_count); | 132 | std::size_t worker_sz = WorkerBufferSize(channel_count); |
| 133 | ASSERT_MSG(buffer_sz < worker_sz, "Worker buffer too large"); | 133 | ASSERT_MSG(buffer_sz < worker_sz, "Worker buffer too large"); |
| 134 | std::unique_ptr<OpusDecoder, OpusDeleter> decoder{ | 134 | std::unique_ptr<OpusDecoder, OpusDeleter> decoder{ |
| 135 | static_cast<OpusDecoder*>(operator new(worker_sz))}; | 135 | static_cast<OpusDecoder*>(operator new(worker_sz))}; |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index a8e0c869f..ab2f17db9 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -89,7 +89,7 @@ private: | |||
| 89 | controller_header.left_color_body = JOYCON_BODY_NEON_BLUE; | 89 | controller_header.left_color_body = JOYCON_BODY_NEON_BLUE; |
| 90 | controller_header.left_color_buttons = JOYCON_BUTTONS_NEON_BLUE; | 90 | controller_header.left_color_buttons = JOYCON_BUTTONS_NEON_BLUE; |
| 91 | 91 | ||
| 92 | for (size_t controller = 0; controller < mem.controllers.size(); controller++) { | 92 | for (std::size_t controller = 0; controller < mem.controllers.size(); controller++) { |
| 93 | for (auto& layout : mem.controllers[controller].layouts) { | 93 | for (auto& layout : mem.controllers[controller].layouts) { |
| 94 | layout.header.num_entries = HID_NUM_ENTRIES; | 94 | layout.header.num_entries = HID_NUM_ENTRIES; |
| 95 | layout.header.max_entry_index = HID_NUM_ENTRIES - 1; | 95 | layout.header.max_entry_index = HID_NUM_ENTRIES - 1; |
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp index 098da2a41..c89157a4d 100644 --- a/src/core/hle/service/lm/lm.cpp +++ b/src/core/hle/service/lm/lm.cpp | |||
| @@ -99,7 +99,7 @@ private: | |||
| 99 | std::string thread; | 99 | std::string thread; |
| 100 | while (addr < end_addr) { | 100 | while (addr < end_addr) { |
| 101 | const Field field{static_cast<Field>(Memory::Read8(addr++))}; | 101 | const Field field{static_cast<Field>(Memory::Read8(addr++))}; |
| 102 | const size_t length{Memory::Read8(addr++)}; | 102 | const std::size_t length{Memory::Read8(addr++)}; |
| 103 | 103 | ||
| 104 | if (static_cast<Field>(Memory::Read8(addr)) == Field::Skip) { | 104 | if (static_cast<Field>(Memory::Read8(addr)) == Field::Skip) { |
| 105 | ++addr; | 105 | ++addr; |
diff --git a/src/core/hle/service/ns/pl_u.cpp b/src/core/hle/service/ns/pl_u.cpp index 447689a1a..1069d103f 100644 --- a/src/core/hle/service/ns/pl_u.cpp +++ b/src/core/hle/service/ns/pl_u.cpp | |||
| @@ -78,7 +78,7 @@ enum class LoadState : u32 { | |||
| 78 | }; | 78 | }; |
| 79 | 79 | ||
| 80 | static void DecryptSharedFont(const std::vector<u32>& input, std::vector<u8>& output, | 80 | static void DecryptSharedFont(const std::vector<u32>& input, std::vector<u8>& output, |
| 81 | size_t& offset) { | 81 | std::size_t& offset) { |
| 82 | ASSERT_MSG(offset + (input.size() * sizeof(u32)) < SHARED_FONT_MEM_SIZE, | 82 | ASSERT_MSG(offset + (input.size() * sizeof(u32)) < SHARED_FONT_MEM_SIZE, |
| 83 | "Shared fonts exceeds 17mb!"); | 83 | "Shared fonts exceeds 17mb!"); |
| 84 | ASSERT_MSG(input[0] == EXPECTED_MAGIC, "Failed to derive key, unexpected magic number"); | 84 | ASSERT_MSG(input[0] == EXPECTED_MAGIC, "Failed to derive key, unexpected magic number"); |
| @@ -95,7 +95,7 @@ static void DecryptSharedFont(const std::vector<u32>& input, std::vector<u8>& ou | |||
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | static void EncryptSharedFont(const std::vector<u8>& input, std::vector<u8>& output, | 97 | static void EncryptSharedFont(const std::vector<u8>& input, std::vector<u8>& output, |
| 98 | size_t& offset) { | 98 | std::size_t& offset) { |
| 99 | ASSERT_MSG(offset + input.size() + 8 < SHARED_FONT_MEM_SIZE, "Shared fonts exceeds 17mb!"); | 99 | ASSERT_MSG(offset + input.size() + 8 < SHARED_FONT_MEM_SIZE, "Shared fonts exceeds 17mb!"); |
| 100 | const u32 KEY = EXPECTED_MAGIC ^ EXPECTED_RESULT; | 100 | const u32 KEY = EXPECTED_MAGIC ^ EXPECTED_RESULT; |
| 101 | std::memcpy(output.data() + offset, &EXPECTED_RESULT, sizeof(u32)); // Magic header | 101 | std::memcpy(output.data() + offset, &EXPECTED_RESULT, sizeof(u32)); // Magic header |
| @@ -113,7 +113,7 @@ static u32 GetU32Swapped(const u8* data) { | |||
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | struct PL_U::Impl { | 115 | struct PL_U::Impl { |
| 116 | const FontRegion& GetSharedFontRegion(size_t index) const { | 116 | const FontRegion& GetSharedFontRegion(std::size_t index) const { |
| 117 | if (index >= shared_font_regions.size() || shared_font_regions.empty()) { | 117 | if (index >= shared_font_regions.size() || shared_font_regions.empty()) { |
| 118 | // No font fallback | 118 | // No font fallback |
| 119 | return EMPTY_REGION; | 119 | return EMPTY_REGION; |
| @@ -126,7 +126,7 @@ struct PL_U::Impl { | |||
| 126 | // based on the shared memory dump | 126 | // based on the shared memory dump |
| 127 | unsigned cur_offset = 0; | 127 | unsigned cur_offset = 0; |
| 128 | 128 | ||
| 129 | for (size_t i = 0; i < SHARED_FONTS.size(); i++) { | 129 | for (std::size_t i = 0; i < SHARED_FONTS.size(); i++) { |
| 130 | // Out of shared fonts/invalid font | 130 | // Out of shared fonts/invalid font |
| 131 | if (GetU32Swapped(input.data() + cur_offset) != EXPECTED_RESULT) { | 131 | if (GetU32Swapped(input.data() + cur_offset) != EXPECTED_RESULT) { |
| 132 | break; | 132 | break; |
| @@ -162,7 +162,7 @@ PL_U::PL_U() : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} { | |||
| 162 | RegisterHandlers(functions); | 162 | RegisterHandlers(functions); |
| 163 | // Attempt to load shared font data from disk | 163 | // Attempt to load shared font data from disk |
| 164 | const auto nand = FileSystem::GetSystemNANDContents(); | 164 | const auto nand = FileSystem::GetSystemNANDContents(); |
| 165 | size_t offset = 0; | 165 | std::size_t offset = 0; |
| 166 | // Rebuild shared fonts from data ncas | 166 | // Rebuild shared fonts from data ncas |
| 167 | if (nand->HasEntry(static_cast<u64>(FontArchives::Standard), | 167 | if (nand->HasEntry(static_cast<u64>(FontArchives::Standard), |
| 168 | FileSys::ContentRecordType::Data)) { | 168 | FileSys::ContentRecordType::Data)) { |
| @@ -344,7 +344,7 @@ void PL_U::GetSharedFontInOrderOfPriority(Kernel::HLERequestContext& ctx) { | |||
| 344 | std::vector<u32> font_sizes; | 344 | std::vector<u32> font_sizes; |
| 345 | 345 | ||
| 346 | // TODO(ogniK): Have actual priority order | 346 | // TODO(ogniK): Have actual priority order |
| 347 | for (size_t i = 0; i < impl->shared_font_regions.size(); i++) { | 347 | for (std::size_t i = 0; i < impl->shared_font_regions.size(); i++) { |
| 348 | font_codes.push_back(static_cast<u32>(i)); | 348 | font_codes.push_back(static_cast<u32>(i)); |
| 349 | auto region = impl->GetSharedFontRegion(i); | 349 | auto region = impl->GetSharedFontRegion(i); |
| 350 | font_offsets.push_back(region.offset); | 350 | font_offsets.push_back(region.offset); |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp index 25d5a93fa..d8b8037a8 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp | |||
| @@ -71,7 +71,7 @@ u32 nvhost_as_gpu::AllocateSpace(const std::vector<u8>& input, std::vector<u8>& | |||
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | u32 nvhost_as_gpu::Remap(const std::vector<u8>& input, std::vector<u8>& output) { | 73 | u32 nvhost_as_gpu::Remap(const std::vector<u8>& input, std::vector<u8>& output) { |
| 74 | size_t num_entries = input.size() / sizeof(IoctlRemapEntry); | 74 | std::size_t num_entries = input.size() / sizeof(IoctlRemapEntry); |
| 75 | 75 | ||
| 76 | LOG_WARNING(Service_NVDRV, "(STUBBED) called, num_entries=0x{:X}", num_entries); | 76 | LOG_WARNING(Service_NVDRV, "(STUBBED) called, num_entries=0x{:X}", num_entries); |
| 77 | 77 | ||
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp index 7455ddd19..d47b6f659 100644 --- a/src/core/hle/service/nvflinger/nvflinger.cpp +++ b/src/core/hle/service/nvflinger/nvflinger.cpp | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | 23 | ||
| 24 | namespace Service::NVFlinger { | 24 | namespace Service::NVFlinger { |
| 25 | 25 | ||
| 26 | constexpr size_t SCREEN_REFRESH_RATE = 60; | 26 | constexpr std::size_t SCREEN_REFRESH_RATE = 60; |
| 27 | constexpr u64 frame_ticks = static_cast<u64>(CoreTiming::BASE_CLOCK_RATE / SCREEN_REFRESH_RATE); | 27 | constexpr u64 frame_ticks = static_cast<u64>(CoreTiming::BASE_CLOCK_RATE / SCREEN_REFRESH_RATE); |
| 28 | 28 | ||
| 29 | NVFlinger::NVFlinger() { | 29 | NVFlinger::NVFlinger() { |
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 9bb7c7b26..5c007d9f1 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -129,9 +129,9 @@ Kernel::SharedPtr<Kernel::ClientPort> ServiceFrameworkBase::CreatePort() { | |||
| 129 | return client_port; | 129 | return client_port; |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, size_t n) { | 132 | void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n) { |
| 133 | handlers.reserve(handlers.size() + n); | 133 | handlers.reserve(handlers.size() + n); |
| 134 | for (size_t i = 0; i < n; ++i) { | 134 | for (std::size_t i = 0; i < n; ++i) { |
| 135 | // Usually this array is sorted by id already, so hint to insert at the end | 135 | // Usually this array is sorted by id already, so hint to insert at the end |
| 136 | handlers.emplace_hint(handlers.cend(), functions[i].expected_header, functions[i]); | 136 | handlers.emplace_hint(handlers.cend(), functions[i].expected_header, functions[i]); |
| 137 | } | 137 | } |
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index 7a051523e..2fc57a82e 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h | |||
| @@ -88,7 +88,7 @@ private: | |||
| 88 | ServiceFrameworkBase(const char* service_name, u32 max_sessions, InvokerFn* handler_invoker); | 88 | ServiceFrameworkBase(const char* service_name, u32 max_sessions, InvokerFn* handler_invoker); |
| 89 | ~ServiceFrameworkBase(); | 89 | ~ServiceFrameworkBase(); |
| 90 | 90 | ||
| 91 | void RegisterHandlersBase(const FunctionInfoBase* functions, size_t n); | 91 | void RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n); |
| 92 | void ReportUnimplementedFunction(Kernel::HLERequestContext& ctx, const FunctionInfoBase* info); | 92 | void ReportUnimplementedFunction(Kernel::HLERequestContext& ctx, const FunctionInfoBase* info); |
| 93 | 93 | ||
| 94 | /// Identifier string used to connect to the service. | 94 | /// Identifier string used to connect to the service. |
| @@ -152,7 +152,7 @@ protected: | |||
| 152 | : ServiceFrameworkBase(service_name, max_sessions, Invoker) {} | 152 | : ServiceFrameworkBase(service_name, max_sessions, Invoker) {} |
| 153 | 153 | ||
| 154 | /// Registers handlers in the service. | 154 | /// Registers handlers in the service. |
| 155 | template <size_t N> | 155 | template <std::size_t N> |
| 156 | void RegisterHandlers(const FunctionInfo (&functions)[N]) { | 156 | void RegisterHandlers(const FunctionInfo (&functions)[N]) { |
| 157 | RegisterHandlers(functions, N); | 157 | RegisterHandlers(functions, N); |
| 158 | } | 158 | } |
| @@ -161,7 +161,7 @@ protected: | |||
| 161 | * Registers handlers in the service. Usually prefer using the other RegisterHandlers | 161 | * Registers handlers in the service. Usually prefer using the other RegisterHandlers |
| 162 | * overload in order to avoid needing to specify the array size. | 162 | * overload in order to avoid needing to specify the array size. |
| 163 | */ | 163 | */ |
| 164 | void RegisterHandlers(const FunctionInfo* functions, size_t n) { | 164 | void RegisterHandlers(const FunctionInfo* functions, std::size_t n) { |
| 165 | RegisterHandlersBase(functions, n); | 165 | RegisterHandlersBase(functions, n); |
| 166 | } | 166 | } |
| 167 | 167 | ||
diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp index 59eb20155..9e5af7839 100644 --- a/src/core/hle/service/set/set.cpp +++ b/src/core/hle/service/set/set.cpp | |||
| @@ -32,21 +32,21 @@ constexpr std::array<LanguageCode, 17> available_language_codes = {{ | |||
| 32 | LanguageCode::ZH_HANT, | 32 | LanguageCode::ZH_HANT, |
| 33 | }}; | 33 | }}; |
| 34 | 34 | ||
| 35 | constexpr size_t pre4_0_0_max_entries = 0xF; | 35 | constexpr std::size_t pre4_0_0_max_entries = 0xF; |
| 36 | constexpr size_t post4_0_0_max_entries = 0x40; | 36 | constexpr std::size_t post4_0_0_max_entries = 0x40; |
| 37 | 37 | ||
| 38 | LanguageCode GetLanguageCodeFromIndex(size_t index) { | 38 | LanguageCode GetLanguageCodeFromIndex(std::size_t index) { |
| 39 | return available_language_codes.at(index); | 39 | return available_language_codes.at(index); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | template <size_t size> | 42 | template <std::size_t size> |
| 43 | static std::array<LanguageCode, size> MakeLanguageCodeSubset() { | 43 | static std::array<LanguageCode, size> MakeLanguageCodeSubset() { |
| 44 | std::array<LanguageCode, size> arr; | 44 | std::array<LanguageCode, size> arr; |
| 45 | std::copy_n(available_language_codes.begin(), size, arr.begin()); | 45 | std::copy_n(available_language_codes.begin(), size, arr.begin()); |
| 46 | return arr; | 46 | return arr; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | static void PushResponseLanguageCode(Kernel::HLERequestContext& ctx, size_t max_size) { | 49 | static void PushResponseLanguageCode(Kernel::HLERequestContext& ctx, std::size_t max_size) { |
| 50 | IPC::ResponseBuilder rb{ctx, 3}; | 50 | IPC::ResponseBuilder rb{ctx, 3}; |
| 51 | rb.Push(RESULT_SUCCESS); | 51 | rb.Push(RESULT_SUCCESS); |
| 52 | if (available_language_codes.size() > max_size) | 52 | if (available_language_codes.size() > max_size) |
diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h index 5f0214359..266f13e46 100644 --- a/src/core/hle/service/set/set.h +++ b/src/core/hle/service/set/set.h | |||
| @@ -28,7 +28,7 @@ enum class LanguageCode : u64 { | |||
| 28 | ZH_HANS = 0x00736E61482D687A, | 28 | ZH_HANS = 0x00736E61482D687A, |
| 29 | ZH_HANT = 0x00746E61482D687A, | 29 | ZH_HANT = 0x00746E61482D687A, |
| 30 | }; | 30 | }; |
| 31 | LanguageCode GetLanguageCodeFromIndex(size_t idx); | 31 | LanguageCode GetLanguageCodeFromIndex(std::size_t idx); |
| 32 | 32 | ||
| 33 | class SET final : public ServiceFramework<SET> { | 33 | class SET final : public ServiceFramework<SET> { |
| 34 | public: | 34 | public: |
diff --git a/src/core/hle/service/spl/module.cpp b/src/core/hle/service/spl/module.cpp index 0d8441fb1..44a6717d0 100644 --- a/src/core/hle/service/spl/module.cpp +++ b/src/core/hle/service/spl/module.cpp | |||
| @@ -21,7 +21,7 @@ Module::Interface::~Interface() = default; | |||
| 21 | void Module::Interface::GetRandomBytes(Kernel::HLERequestContext& ctx) { | 21 | void Module::Interface::GetRandomBytes(Kernel::HLERequestContext& ctx) { |
| 22 | IPC::RequestParser rp{ctx}; | 22 | IPC::RequestParser rp{ctx}; |
| 23 | 23 | ||
| 24 | size_t size = ctx.GetWriteBufferSize(); | 24 | std::size_t size = ctx.GetWriteBufferSize(); |
| 25 | 25 | ||
| 26 | std::vector<u8> data(size); | 26 | std::vector<u8> data(size); |
| 27 | std::generate(data.begin(), data.end(), std::rand); | 27 | std::generate(data.begin(), data.end(), std::rand); |
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index cf94b00e6..13545d50a 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp | |||
| @@ -38,7 +38,7 @@ static_assert(sizeof(DisplayInfo) == 0x60, "DisplayInfo has wrong size"); | |||
| 38 | class Parcel { | 38 | class Parcel { |
| 39 | public: | 39 | public: |
| 40 | // This default size was chosen arbitrarily. | 40 | // This default size was chosen arbitrarily. |
| 41 | static constexpr size_t DefaultBufferSize = 0x40; | 41 | static constexpr std::size_t DefaultBufferSize = 0x40; |
| 42 | Parcel() : buffer(DefaultBufferSize) {} | 42 | Parcel() : buffer(DefaultBufferSize) {} |
| 43 | explicit Parcel(std::vector<u8> data) : buffer(std::move(data)) {} | 43 | explicit Parcel(std::vector<u8> data) : buffer(std::move(data)) {} |
| 44 | virtual ~Parcel() = default; | 44 | virtual ~Parcel() = default; |
| @@ -66,7 +66,7 @@ public: | |||
| 66 | return val; | 66 | return val; |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | std::vector<u8> ReadBlock(size_t length) { | 69 | std::vector<u8> ReadBlock(std::size_t length) { |
| 70 | ASSERT(read_index + length <= buffer.size()); | 70 | ASSERT(read_index + length <= buffer.size()); |
| 71 | const u8* const begin = buffer.data() + read_index; | 71 | const u8* const begin = buffer.data() + read_index; |
| 72 | const u8* const end = begin + length; | 72 | const u8* const end = begin + length; |
| @@ -156,8 +156,8 @@ private: | |||
| 156 | static_assert(sizeof(Header) == 16, "ParcelHeader has wrong size"); | 156 | static_assert(sizeof(Header) == 16, "ParcelHeader has wrong size"); |
| 157 | 157 | ||
| 158 | std::vector<u8> buffer; | 158 | std::vector<u8> buffer; |
| 159 | size_t read_index = 0; | 159 | std::size_t read_index = 0; |
| 160 | size_t write_index = 0; | 160 | std::size_t write_index = 0; |
| 161 | }; | 161 | }; |
| 162 | 162 | ||
| 163 | class NativeWindow : public Parcel { | 163 | class NativeWindow : public Parcel { |
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp index 120e1e133..0e2af20b4 100644 --- a/src/core/loader/elf.cpp +++ b/src/core/loader/elf.cpp | |||
| @@ -300,7 +300,7 @@ SharedPtr<CodeSet> ElfReader::LoadInto(u32 vaddr) { | |||
| 300 | } | 300 | } |
| 301 | 301 | ||
| 302 | std::vector<u8> program_image(total_image_size); | 302 | std::vector<u8> program_image(total_image_size); |
| 303 | size_t current_image_position = 0; | 303 | std::size_t current_image_position = 0; |
| 304 | 304 | ||
| 305 | auto& kernel = Core::System::GetInstance().Kernel(); | 305 | auto& kernel = Core::System::GetInstance().Kernel(); |
| 306 | SharedPtr<CodeSet> codeset = CodeSet::Create(kernel, ""); | 306 | SharedPtr<CodeSet> codeset = CodeSet::Create(kernel, ""); |
diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index fa43a2650..f2a183ba1 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp | |||
| @@ -155,7 +155,7 @@ constexpr std::array<const char*, 58> RESULT_MESSAGES{ | |||
| 155 | }; | 155 | }; |
| 156 | 156 | ||
| 157 | std::ostream& operator<<(std::ostream& os, ResultStatus status) { | 157 | std::ostream& operator<<(std::ostream& os, ResultStatus status) { |
| 158 | os << RESULT_MESSAGES.at(static_cast<size_t>(status)); | 158 | os << RESULT_MESSAGES.at(static_cast<std::size_t>(status)); |
| 159 | return os; | 159 | return os; |
| 160 | } | 160 | } |
| 161 | 161 | ||
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 0e4e0157c..316b46820 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -370,16 +370,16 @@ u64 Read64(const VAddr addr) { | |||
| 370 | } | 370 | } |
| 371 | 371 | ||
| 372 | void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_buffer, | 372 | void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_buffer, |
| 373 | const size_t size) { | 373 | const std::size_t size) { |
| 374 | auto& page_table = process.vm_manager.page_table; | 374 | auto& page_table = process.vm_manager.page_table; |
| 375 | 375 | ||
| 376 | size_t remaining_size = size; | 376 | std::size_t remaining_size = size; |
| 377 | size_t page_index = src_addr >> PAGE_BITS; | 377 | std::size_t page_index = src_addr >> PAGE_BITS; |
| 378 | size_t page_offset = src_addr & PAGE_MASK; | 378 | std::size_t page_offset = src_addr & PAGE_MASK; |
| 379 | 379 | ||
| 380 | while (remaining_size > 0) { | 380 | while (remaining_size > 0) { |
| 381 | const size_t copy_amount = | 381 | const std::size_t copy_amount = |
| 382 | std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); | 382 | std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size); |
| 383 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); | 383 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); |
| 384 | 384 | ||
| 385 | switch (page_table.attributes[page_index]) { | 385 | switch (page_table.attributes[page_index]) { |
| @@ -414,7 +414,7 @@ void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_ | |||
| 414 | } | 414 | } |
| 415 | } | 415 | } |
| 416 | 416 | ||
| 417 | void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { | 417 | void ReadBlock(const VAddr src_addr, void* dest_buffer, const std::size_t size) { |
| 418 | ReadBlock(*Core::CurrentProcess(), src_addr, dest_buffer, size); | 418 | ReadBlock(*Core::CurrentProcess(), src_addr, dest_buffer, size); |
| 419 | } | 419 | } |
| 420 | 420 | ||
| @@ -435,15 +435,15 @@ void Write64(const VAddr addr, const u64 data) { | |||
| 435 | } | 435 | } |
| 436 | 436 | ||
| 437 | void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const void* src_buffer, | 437 | void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const void* src_buffer, |
| 438 | const size_t size) { | 438 | const std::size_t size) { |
| 439 | auto& page_table = process.vm_manager.page_table; | 439 | auto& page_table = process.vm_manager.page_table; |
| 440 | size_t remaining_size = size; | 440 | std::size_t remaining_size = size; |
| 441 | size_t page_index = dest_addr >> PAGE_BITS; | 441 | std::size_t page_index = dest_addr >> PAGE_BITS; |
| 442 | size_t page_offset = dest_addr & PAGE_MASK; | 442 | std::size_t page_offset = dest_addr & PAGE_MASK; |
| 443 | 443 | ||
| 444 | while (remaining_size > 0) { | 444 | while (remaining_size > 0) { |
| 445 | const size_t copy_amount = | 445 | const std::size_t copy_amount = |
| 446 | std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); | 446 | std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size); |
| 447 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); | 447 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); |
| 448 | 448 | ||
| 449 | switch (page_table.attributes[page_index]) { | 449 | switch (page_table.attributes[page_index]) { |
| @@ -477,19 +477,19 @@ void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const voi | |||
| 477 | } | 477 | } |
| 478 | } | 478 | } |
| 479 | 479 | ||
| 480 | void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size) { | 480 | void WriteBlock(const VAddr dest_addr, const void* src_buffer, const std::size_t size) { |
| 481 | WriteBlock(*Core::CurrentProcess(), dest_addr, src_buffer, size); | 481 | WriteBlock(*Core::CurrentProcess(), dest_addr, src_buffer, size); |
| 482 | } | 482 | } |
| 483 | 483 | ||
| 484 | void ZeroBlock(const Kernel::Process& process, const VAddr dest_addr, const size_t size) { | 484 | void ZeroBlock(const Kernel::Process& process, const VAddr dest_addr, const std::size_t size) { |
| 485 | auto& page_table = process.vm_manager.page_table; | 485 | auto& page_table = process.vm_manager.page_table; |
| 486 | size_t remaining_size = size; | 486 | std::size_t remaining_size = size; |
| 487 | size_t page_index = dest_addr >> PAGE_BITS; | 487 | std::size_t page_index = dest_addr >> PAGE_BITS; |
| 488 | size_t page_offset = dest_addr & PAGE_MASK; | 488 | std::size_t page_offset = dest_addr & PAGE_MASK; |
| 489 | 489 | ||
| 490 | while (remaining_size > 0) { | 490 | while (remaining_size > 0) { |
| 491 | const size_t copy_amount = | 491 | const std::size_t copy_amount = |
| 492 | std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); | 492 | std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size); |
| 493 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); | 493 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); |
| 494 | 494 | ||
| 495 | switch (page_table.attributes[page_index]) { | 495 | switch (page_table.attributes[page_index]) { |
| @@ -522,15 +522,16 @@ void ZeroBlock(const Kernel::Process& process, const VAddr dest_addr, const size | |||
| 522 | } | 522 | } |
| 523 | } | 523 | } |
| 524 | 524 | ||
| 525 | void CopyBlock(const Kernel::Process& process, VAddr dest_addr, VAddr src_addr, const size_t size) { | 525 | void CopyBlock(const Kernel::Process& process, VAddr dest_addr, VAddr src_addr, |
| 526 | const std::size_t size) { | ||
| 526 | auto& page_table = process.vm_manager.page_table; | 527 | auto& page_table = process.vm_manager.page_table; |
| 527 | size_t remaining_size = size; | 528 | std::size_t remaining_size = size; |
| 528 | size_t page_index = src_addr >> PAGE_BITS; | 529 | std::size_t page_index = src_addr >> PAGE_BITS; |
| 529 | size_t page_offset = src_addr & PAGE_MASK; | 530 | std::size_t page_offset = src_addr & PAGE_MASK; |
| 530 | 531 | ||
| 531 | while (remaining_size > 0) { | 532 | while (remaining_size > 0) { |
| 532 | const size_t copy_amount = | 533 | const std::size_t copy_amount = |
| 533 | std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); | 534 | std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size); |
| 534 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); | 535 | const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); |
| 535 | 536 | ||
| 536 | switch (page_table.attributes[page_index]) { | 537 | switch (page_table.attributes[page_index]) { |
| @@ -565,7 +566,7 @@ void CopyBlock(const Kernel::Process& process, VAddr dest_addr, VAddr src_addr, | |||
| 565 | } | 566 | } |
| 566 | } | 567 | } |
| 567 | 568 | ||
| 568 | void CopyBlock(VAddr dest_addr, VAddr src_addr, size_t size) { | 569 | void CopyBlock(VAddr dest_addr, VAddr src_addr, std::size_t size) { |
| 569 | CopyBlock(*Core::CurrentProcess(), dest_addr, src_addr, size); | 570 | CopyBlock(*Core::CurrentProcess(), dest_addr, src_addr, size); |
| 570 | } | 571 | } |
| 571 | 572 | ||
diff --git a/src/core/memory.h b/src/core/memory.h index f06e04a75..2a27c0251 100644 --- a/src/core/memory.h +++ b/src/core/memory.h | |||
| @@ -22,11 +22,11 @@ namespace Memory { | |||
| 22 | * Page size used by the ARM architecture. This is the smallest granularity with which memory can | 22 | * Page size used by the ARM architecture. This is the smallest granularity with which memory can |
| 23 | * be mapped. | 23 | * be mapped. |
| 24 | */ | 24 | */ |
| 25 | constexpr size_t PAGE_BITS = 12; | 25 | constexpr std::size_t PAGE_BITS = 12; |
| 26 | constexpr u64 PAGE_SIZE = 1 << PAGE_BITS; | 26 | constexpr u64 PAGE_SIZE = 1 << PAGE_BITS; |
| 27 | constexpr u64 PAGE_MASK = PAGE_SIZE - 1; | 27 | constexpr u64 PAGE_MASK = PAGE_SIZE - 1; |
| 28 | constexpr size_t ADDRESS_SPACE_BITS = 36; | 28 | constexpr std::size_t ADDRESS_SPACE_BITS = 36; |
| 29 | constexpr size_t PAGE_TABLE_NUM_ENTRIES = 1ULL << (ADDRESS_SPACE_BITS - PAGE_BITS); | 29 | constexpr std::size_t PAGE_TABLE_NUM_ENTRIES = 1ULL << (ADDRESS_SPACE_BITS - PAGE_BITS); |
| 30 | 30 | ||
| 31 | enum class PageType : u8 { | 31 | enum class PageType : u8 { |
| 32 | /// Page is unmapped and should cause an access error. | 32 | /// Page is unmapped and should cause an access error. |
| @@ -154,13 +154,13 @@ void Write16(VAddr addr, u16 data); | |||
| 154 | void Write32(VAddr addr, u32 data); | 154 | void Write32(VAddr addr, u32 data); |
| 155 | void Write64(VAddr addr, u64 data); | 155 | void Write64(VAddr addr, u64 data); |
| 156 | 156 | ||
| 157 | void ReadBlock(const Kernel::Process& process, VAddr src_addr, void* dest_buffer, size_t size); | 157 | void ReadBlock(const Kernel::Process& process, VAddr src_addr, void* dest_buffer, std::size_t size); |
| 158 | void ReadBlock(VAddr src_addr, void* dest_buffer, size_t size); | 158 | void ReadBlock(VAddr src_addr, void* dest_buffer, std::size_t size); |
| 159 | void WriteBlock(const Kernel::Process& process, VAddr dest_addr, const void* src_buffer, | 159 | void WriteBlock(const Kernel::Process& process, VAddr dest_addr, const void* src_buffer, |
| 160 | size_t size); | 160 | std::size_t size); |
| 161 | void WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size); | 161 | void WriteBlock(VAddr dest_addr, const void* src_buffer, std::size_t size); |
| 162 | void ZeroBlock(const Kernel::Process& process, VAddr dest_addr, size_t size); | 162 | void ZeroBlock(const Kernel::Process& process, VAddr dest_addr, std::size_t size); |
| 163 | void CopyBlock(VAddr dest_addr, VAddr src_addr, size_t size); | 163 | void CopyBlock(VAddr dest_addr, VAddr src_addr, std::size_t size); |
| 164 | 164 | ||
| 165 | u8* GetPointer(VAddr vaddr); | 165 | u8* GetPointer(VAddr vaddr); |
| 166 | 166 | ||
diff --git a/src/core/memory_hook.h b/src/core/memory_hook.h index e8ea19333..0269c7ff1 100644 --- a/src/core/memory_hook.h +++ b/src/core/memory_hook.h | |||
| @@ -32,14 +32,14 @@ public: | |||
| 32 | virtual boost::optional<u32> Read32(VAddr addr) = 0; | 32 | virtual boost::optional<u32> Read32(VAddr addr) = 0; |
| 33 | virtual boost::optional<u64> Read64(VAddr addr) = 0; | 33 | virtual boost::optional<u64> Read64(VAddr addr) = 0; |
| 34 | 34 | ||
| 35 | virtual bool ReadBlock(VAddr src_addr, void* dest_buffer, size_t size) = 0; | 35 | virtual bool ReadBlock(VAddr src_addr, void* dest_buffer, std::size_t size) = 0; |
| 36 | 36 | ||
| 37 | virtual bool Write8(VAddr addr, u8 data) = 0; | 37 | virtual bool Write8(VAddr addr, u8 data) = 0; |
| 38 | virtual bool Write16(VAddr addr, u16 data) = 0; | 38 | virtual bool Write16(VAddr addr, u16 data) = 0; |
| 39 | virtual bool Write32(VAddr addr, u32 data) = 0; | 39 | virtual bool Write32(VAddr addr, u32 data) = 0; |
| 40 | virtual bool Write64(VAddr addr, u64 data) = 0; | 40 | virtual bool Write64(VAddr addr, u64 data) = 0; |
| 41 | 41 | ||
| 42 | virtual bool WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size) = 0; | 42 | virtual bool WriteBlock(VAddr dest_addr, const void* src_buffer, std::size_t size) = 0; |
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | using MemoryHookPointer = std::shared_ptr<MemoryHook>; | 45 | using MemoryHookPointer = std::shared_ptr<MemoryHook>; |
diff --git a/src/core/tracer/recorder.cpp b/src/core/tracer/recorder.cpp index af032f0c9..73cacb47f 100644 --- a/src/core/tracer/recorder.cpp +++ b/src/core/tracer/recorder.cpp | |||
| @@ -76,7 +76,7 @@ void Recorder::Finish(const std::string& filename) { | |||
| 76 | try { | 76 | try { |
| 77 | // Open file and write header | 77 | // Open file and write header |
| 78 | FileUtil::IOFile file(filename, "wb"); | 78 | FileUtil::IOFile file(filename, "wb"); |
| 79 | size_t written = file.WriteObject(header); | 79 | std::size_t written = file.WriteObject(header); |
| 80 | if (written != 1 || file.Tell() != initial.gpu_registers) | 80 | if (written != 1 || file.Tell() != initial.gpu_registers) |
| 81 | throw "Failed to write header"; | 81 | throw "Failed to write header"; |
| 82 | 82 | ||
diff --git a/src/tests/common/ring_buffer.cpp b/src/tests/common/ring_buffer.cpp index f3fe57839..c883c4d56 100644 --- a/src/tests/common/ring_buffer.cpp +++ b/src/tests/common/ring_buffer.cpp | |||
| @@ -17,9 +17,9 @@ TEST_CASE("RingBuffer: Basic Tests", "[common]") { | |||
| 17 | RingBuffer<char, 4, 1> buf; | 17 | RingBuffer<char, 4, 1> buf; |
| 18 | 18 | ||
| 19 | // Pushing values into a ring buffer with space should succeed. | 19 | // Pushing values into a ring buffer with space should succeed. |
| 20 | for (size_t i = 0; i < 4; i++) { | 20 | for (std::size_t i = 0; i < 4; i++) { |
| 21 | const char elem = static_cast<char>(i); | 21 | const char elem = static_cast<char>(i); |
| 22 | const size_t count = buf.Push(&elem, 1); | 22 | const std::size_t count = buf.Push(&elem, 1); |
| 23 | REQUIRE(count == 1); | 23 | REQUIRE(count == 1); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| @@ -28,7 +28,7 @@ TEST_CASE("RingBuffer: Basic Tests", "[common]") { | |||
| 28 | // Pushing values into a full ring buffer should fail. | 28 | // Pushing values into a full ring buffer should fail. |
| 29 | { | 29 | { |
| 30 | const char elem = static_cast<char>(42); | 30 | const char elem = static_cast<char>(42); |
| 31 | const size_t count = buf.Push(&elem, 1); | 31 | const std::size_t count = buf.Push(&elem, 1); |
| 32 | REQUIRE(count == 0); | 32 | REQUIRE(count == 0); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| @@ -57,7 +57,7 @@ TEST_CASE("RingBuffer: Basic Tests", "[common]") { | |||
| 57 | { | 57 | { |
| 58 | std::vector<char> to_push(6); | 58 | std::vector<char> to_push(6); |
| 59 | std::iota(to_push.begin(), to_push.end(), 88); | 59 | std::iota(to_push.begin(), to_push.end(), 88); |
| 60 | const size_t count = buf.Push(to_push); | 60 | const std::size_t count = buf.Push(to_push); |
| 61 | REQUIRE(count == 3); | 61 | REQUIRE(count == 3); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| @@ -79,9 +79,9 @@ TEST_CASE("RingBuffer: Basic Tests", "[common]") { | |||
| 79 | TEST_CASE("RingBuffer: Threaded Test", "[common]") { | 79 | TEST_CASE("RingBuffer: Threaded Test", "[common]") { |
| 80 | RingBuffer<char, 4, 2> buf; | 80 | RingBuffer<char, 4, 2> buf; |
| 81 | const char seed = 42; | 81 | const char seed = 42; |
| 82 | const size_t count = 1000000; | 82 | const std::size_t count = 1000000; |
| 83 | size_t full = 0; | 83 | std::size_t full = 0; |
| 84 | size_t empty = 0; | 84 | std::size_t empty = 0; |
| 85 | 85 | ||
| 86 | const auto next_value = [](std::array<char, 2>& value) { | 86 | const auto next_value = [](std::array<char, 2>& value) { |
| 87 | value[0] += 1; | 87 | value[0] += 1; |
| @@ -90,9 +90,9 @@ TEST_CASE("RingBuffer: Threaded Test", "[common]") { | |||
| 90 | 90 | ||
| 91 | std::thread producer{[&] { | 91 | std::thread producer{[&] { |
| 92 | std::array<char, 2> value = {seed, seed}; | 92 | std::array<char, 2> value = {seed, seed}; |
| 93 | size_t i = 0; | 93 | std::size_t i = 0; |
| 94 | while (i < count) { | 94 | while (i < count) { |
| 95 | if (const size_t c = buf.Push(&value[0], 1); c > 0) { | 95 | if (const std::size_t c = buf.Push(&value[0], 1); c > 0) { |
| 96 | REQUIRE(c == 1); | 96 | REQUIRE(c == 1); |
| 97 | i++; | 97 | i++; |
| 98 | next_value(value); | 98 | next_value(value); |
| @@ -105,7 +105,7 @@ TEST_CASE("RingBuffer: Threaded Test", "[common]") { | |||
| 105 | 105 | ||
| 106 | std::thread consumer{[&] { | 106 | std::thread consumer{[&] { |
| 107 | std::array<char, 2> value = {seed, seed}; | 107 | std::array<char, 2> value = {seed, seed}; |
| 108 | size_t i = 0; | 108 | std::size_t i = 0; |
| 109 | while (i < count) { | 109 | while (i < count) { |
| 110 | if (const std::vector<char> v = buf.Pop(1); v.size() > 0) { | 110 | if (const std::vector<char> v = buf.Pop(1); v.size() > 0) { |
| 111 | REQUIRE(v.size() == 2); | 111 | REQUIRE(v.size() == 2); |
diff --git a/src/tests/core/arm/arm_test_common.cpp b/src/tests/core/arm/arm_test_common.cpp index 038d57b3a..7c69fc26e 100644 --- a/src/tests/core/arm/arm_test_common.cpp +++ b/src/tests/core/arm/arm_test_common.cpp | |||
| @@ -87,11 +87,11 @@ boost::optional<u64> TestEnvironment::TestMemory::Read64(VAddr addr) { | |||
| 87 | return *Read32(addr) | static_cast<u64>(*Read32(addr + 4)) << 32; | 87 | return *Read32(addr) | static_cast<u64>(*Read32(addr + 4)) << 32; |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | bool TestEnvironment::TestMemory::ReadBlock(VAddr src_addr, void* dest_buffer, size_t size) { | 90 | bool TestEnvironment::TestMemory::ReadBlock(VAddr src_addr, void* dest_buffer, std::size_t size) { |
| 91 | VAddr addr = src_addr; | 91 | VAddr addr = src_addr; |
| 92 | u8* data = static_cast<u8*>(dest_buffer); | 92 | u8* data = static_cast<u8*>(dest_buffer); |
| 93 | 93 | ||
| 94 | for (size_t i = 0; i < size; i++, addr++, data++) { | 94 | for (std::size_t i = 0; i < size; i++, addr++, data++) { |
| 95 | *data = *Read8(addr); | 95 | *data = *Read8(addr); |
| 96 | } | 96 | } |
| 97 | 97 | ||
| @@ -126,11 +126,12 @@ bool TestEnvironment::TestMemory::Write64(VAddr addr, u64 data) { | |||
| 126 | return true; | 126 | return true; |
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | bool TestEnvironment::TestMemory::WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size) { | 129 | bool TestEnvironment::TestMemory::WriteBlock(VAddr dest_addr, const void* src_buffer, |
| 130 | std::size_t size) { | ||
| 130 | VAddr addr = dest_addr; | 131 | VAddr addr = dest_addr; |
| 131 | const u8* data = static_cast<const u8*>(src_buffer); | 132 | const u8* data = static_cast<const u8*>(src_buffer); |
| 132 | 133 | ||
| 133 | for (size_t i = 0; i < size; i++, addr++, data++) { | 134 | for (std::size_t i = 0; i < size; i++, addr++, data++) { |
| 134 | env->write_records.emplace_back(8, addr, *data); | 135 | env->write_records.emplace_back(8, addr, *data); |
| 135 | if (env->mutable_memory) | 136 | if (env->mutable_memory) |
| 136 | env->SetMemory8(addr, *data); | 137 | env->SetMemory8(addr, *data); |
diff --git a/src/tests/core/arm/arm_test_common.h b/src/tests/core/arm/arm_test_common.h index e4b6df194..5de8dab4e 100644 --- a/src/tests/core/arm/arm_test_common.h +++ b/src/tests/core/arm/arm_test_common.h | |||
| @@ -19,8 +19,8 @@ struct PageTable; | |||
| 19 | namespace ArmTests { | 19 | namespace ArmTests { |
| 20 | 20 | ||
| 21 | struct WriteRecord { | 21 | struct WriteRecord { |
| 22 | WriteRecord(size_t size, VAddr addr, u64 data) : size(size), addr(addr), data(data) {} | 22 | WriteRecord(std::size_t size, VAddr addr, u64 data) : size(size), addr(addr), data(data) {} |
| 23 | size_t size; | 23 | std::size_t size; |
| 24 | VAddr addr; | 24 | VAddr addr; |
| 25 | u64 data; | 25 | u64 data; |
| 26 | bool operator==(const WriteRecord& o) const { | 26 | bool operator==(const WriteRecord& o) const { |
| @@ -71,14 +71,14 @@ private: | |||
| 71 | boost::optional<u32> Read32(VAddr addr) override; | 71 | boost::optional<u32> Read32(VAddr addr) override; |
| 72 | boost::optional<u64> Read64(VAddr addr) override; | 72 | boost::optional<u64> Read64(VAddr addr) override; |
| 73 | 73 | ||
| 74 | bool ReadBlock(VAddr src_addr, void* dest_buffer, size_t size) override; | 74 | bool ReadBlock(VAddr src_addr, void* dest_buffer, std::size_t size) override; |
| 75 | 75 | ||
| 76 | bool Write8(VAddr addr, u8 data) override; | 76 | bool Write8(VAddr addr, u8 data) override; |
| 77 | bool Write16(VAddr addr, u16 data) override; | 77 | bool Write16(VAddr addr, u16 data) override; |
| 78 | bool Write32(VAddr addr, u32 data) override; | 78 | bool Write32(VAddr addr, u32 data) override; |
| 79 | bool Write64(VAddr addr, u64 data) override; | 79 | bool Write64(VAddr addr, u64 data) override; |
| 80 | 80 | ||
| 81 | bool WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size) override; | 81 | bool WriteBlock(VAddr dest_addr, const void* src_buffer, std::size_t size) override; |
| 82 | 82 | ||
| 83 | std::unordered_map<VAddr, u8> data; | 83 | std::unordered_map<VAddr, u8> data; |
| 84 | }; | 84 | }; |
diff --git a/src/video_core/engines/fermi_2d.h b/src/video_core/engines/fermi_2d.h index dcf9ef8b9..021b83eaa 100644 --- a/src/video_core/engines/fermi_2d.h +++ b/src/video_core/engines/fermi_2d.h | |||
| @@ -26,7 +26,7 @@ public: | |||
| 26 | void WriteReg(u32 method, u32 value); | 26 | void WriteReg(u32 method, u32 value); |
| 27 | 27 | ||
| 28 | struct Regs { | 28 | struct Regs { |
| 29 | static constexpr size_t NUM_REGS = 0x258; | 29 | static constexpr std::size_t NUM_REGS = 0x258; |
| 30 | 30 | ||
| 31 | struct Surface { | 31 | struct Surface { |
| 32 | RenderTargetFormat format; | 32 | RenderTargetFormat format; |
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 329079ddd..8afd26fe9 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp | |||
| @@ -248,8 +248,8 @@ void Maxwell3D::DrawArrays() { | |||
| 248 | 248 | ||
| 249 | void Maxwell3D::ProcessCBBind(Regs::ShaderStage stage) { | 249 | void Maxwell3D::ProcessCBBind(Regs::ShaderStage stage) { |
| 250 | // Bind the buffer currently in CB_ADDRESS to the specified index in the desired shader stage. | 250 | // Bind the buffer currently in CB_ADDRESS to the specified index in the desired shader stage. |
| 251 | auto& shader = state.shader_stages[static_cast<size_t>(stage)]; | 251 | auto& shader = state.shader_stages[static_cast<std::size_t>(stage)]; |
| 252 | auto& bind_data = regs.cb_bind[static_cast<size_t>(stage)]; | 252 | auto& bind_data = regs.cb_bind[static_cast<std::size_t>(stage)]; |
| 253 | 253 | ||
| 254 | auto& buffer = shader.const_buffers[bind_data.index]; | 254 | auto& buffer = shader.const_buffers[bind_data.index]; |
| 255 | 255 | ||
| @@ -316,14 +316,14 @@ Texture::TSCEntry Maxwell3D::GetTSCEntry(u32 tsc_index) const { | |||
| 316 | std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderStage stage) const { | 316 | std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderStage stage) const { |
| 317 | std::vector<Texture::FullTextureInfo> textures; | 317 | std::vector<Texture::FullTextureInfo> textures; |
| 318 | 318 | ||
| 319 | auto& fragment_shader = state.shader_stages[static_cast<size_t>(stage)]; | 319 | auto& fragment_shader = state.shader_stages[static_cast<std::size_t>(stage)]; |
| 320 | auto& tex_info_buffer = fragment_shader.const_buffers[regs.tex_cb_index]; | 320 | auto& tex_info_buffer = fragment_shader.const_buffers[regs.tex_cb_index]; |
| 321 | ASSERT(tex_info_buffer.enabled && tex_info_buffer.address != 0); | 321 | ASSERT(tex_info_buffer.enabled && tex_info_buffer.address != 0); |
| 322 | 322 | ||
| 323 | GPUVAddr tex_info_buffer_end = tex_info_buffer.address + tex_info_buffer.size; | 323 | GPUVAddr tex_info_buffer_end = tex_info_buffer.address + tex_info_buffer.size; |
| 324 | 324 | ||
| 325 | // Offset into the texture constbuffer where the texture info begins. | 325 | // Offset into the texture constbuffer where the texture info begins. |
| 326 | static constexpr size_t TextureInfoOffset = 0x20; | 326 | static constexpr std::size_t TextureInfoOffset = 0x20; |
| 327 | 327 | ||
| 328 | for (GPUVAddr current_texture = tex_info_buffer.address + TextureInfoOffset; | 328 | for (GPUVAddr current_texture = tex_info_buffer.address + TextureInfoOffset; |
| 329 | current_texture < tex_info_buffer_end; current_texture += sizeof(Texture::TextureHandle)) { | 329 | current_texture < tex_info_buffer_end; current_texture += sizeof(Texture::TextureHandle)) { |
| @@ -360,8 +360,9 @@ std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderSt | |||
| 360 | return textures; | 360 | return textures; |
| 361 | } | 361 | } |
| 362 | 362 | ||
| 363 | Texture::FullTextureInfo Maxwell3D::GetStageTexture(Regs::ShaderStage stage, size_t offset) const { | 363 | Texture::FullTextureInfo Maxwell3D::GetStageTexture(Regs::ShaderStage stage, |
| 364 | auto& shader = state.shader_stages[static_cast<size_t>(stage)]; | 364 | std::size_t offset) const { |
| 365 | auto& shader = state.shader_stages[static_cast<std::size_t>(stage)]; | ||
| 365 | auto& tex_info_buffer = shader.const_buffers[regs.tex_cb_index]; | 366 | auto& tex_info_buffer = shader.const_buffers[regs.tex_cb_index]; |
| 366 | ASSERT(tex_info_buffer.enabled && tex_info_buffer.address != 0); | 367 | ASSERT(tex_info_buffer.enabled && tex_info_buffer.address != 0); |
| 367 | 368 | ||
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index d3be900a4..b81b0723d 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h | |||
| @@ -34,17 +34,17 @@ public: | |||
| 34 | /// Register structure of the Maxwell3D engine. | 34 | /// Register structure of the Maxwell3D engine. |
| 35 | /// TODO(Subv): This structure will need to be made bigger as more registers are discovered. | 35 | /// TODO(Subv): This structure will need to be made bigger as more registers are discovered. |
| 36 | struct Regs { | 36 | struct Regs { |
| 37 | static constexpr size_t NUM_REGS = 0xE00; | 37 | static constexpr std::size_t NUM_REGS = 0xE00; |
| 38 | 38 | ||
| 39 | static constexpr size_t NumRenderTargets = 8; | 39 | static constexpr std::size_t NumRenderTargets = 8; |
| 40 | static constexpr size_t NumViewports = 16; | 40 | static constexpr std::size_t NumViewports = 16; |
| 41 | static constexpr size_t NumCBData = 16; | 41 | static constexpr std::size_t NumCBData = 16; |
| 42 | static constexpr size_t NumVertexArrays = 32; | 42 | static constexpr std::size_t NumVertexArrays = 32; |
| 43 | static constexpr size_t NumVertexAttributes = 32; | 43 | static constexpr std::size_t NumVertexAttributes = 32; |
| 44 | static constexpr size_t MaxShaderProgram = 6; | 44 | static constexpr std::size_t MaxShaderProgram = 6; |
| 45 | static constexpr size_t MaxShaderStage = 5; | 45 | static constexpr std::size_t MaxShaderStage = 5; |
| 46 | // Maximum number of const buffers per shader stage. | 46 | // Maximum number of const buffers per shader stage. |
| 47 | static constexpr size_t MaxConstBuffers = 18; | 47 | static constexpr std::size_t MaxConstBuffers = 18; |
| 48 | 48 | ||
| 49 | enum class QueryMode : u32 { | 49 | enum class QueryMode : u32 { |
| 50 | Write = 0, | 50 | Write = 0, |
| @@ -443,9 +443,9 @@ public: | |||
| 443 | } | 443 | } |
| 444 | }; | 444 | }; |
| 445 | 445 | ||
| 446 | bool IsShaderConfigEnabled(size_t index) const { | 446 | bool IsShaderConfigEnabled(std::size_t index) const { |
| 447 | // The VertexB is always enabled. | 447 | // The VertexB is always enabled. |
| 448 | if (index == static_cast<size_t>(Regs::ShaderProgram::VertexB)) { | 448 | if (index == static_cast<std::size_t>(Regs::ShaderProgram::VertexB)) { |
| 449 | return true; | 449 | return true; |
| 450 | } | 450 | } |
| 451 | return shader_config[index].enable != 0; | 451 | return shader_config[index].enable != 0; |
| @@ -571,7 +571,7 @@ public: | |||
| 571 | BitField<25, 3, u32> map_7; | 571 | BitField<25, 3, u32> map_7; |
| 572 | }; | 572 | }; |
| 573 | 573 | ||
| 574 | u32 GetMap(size_t index) const { | 574 | u32 GetMap(std::size_t index) const { |
| 575 | const std::array<u32, NumRenderTargets> maps{map_0, map_1, map_2, map_3, | 575 | const std::array<u32, NumRenderTargets> maps{map_0, map_1, map_2, map_3, |
| 576 | map_4, map_5, map_6, map_7}; | 576 | map_4, map_5, map_6, map_7}; |
| 577 | ASSERT(index < maps.size()); | 577 | ASSERT(index < maps.size()); |
| @@ -925,7 +925,7 @@ public: | |||
| 925 | std::vector<Texture::FullTextureInfo> GetStageTextures(Regs::ShaderStage stage) const; | 925 | std::vector<Texture::FullTextureInfo> GetStageTextures(Regs::ShaderStage stage) const; |
| 926 | 926 | ||
| 927 | /// Returns the texture information for a specific texture in a specific shader stage. | 927 | /// Returns the texture information for a specific texture in a specific shader stage. |
| 928 | Texture::FullTextureInfo GetStageTexture(Regs::ShaderStage stage, size_t offset) const; | 928 | Texture::FullTextureInfo GetStageTexture(Regs::ShaderStage stage, std::size_t offset) const; |
| 929 | 929 | ||
| 930 | private: | 930 | private: |
| 931 | VideoCore::RasterizerInterface& rasterizer; | 931 | VideoCore::RasterizerInterface& rasterizer; |
diff --git a/src/video_core/engines/maxwell_dma.cpp b/src/video_core/engines/maxwell_dma.cpp index c24d33d5c..aa7481b8c 100644 --- a/src/video_core/engines/maxwell_dma.cpp +++ b/src/video_core/engines/maxwell_dma.cpp | |||
| @@ -50,7 +50,7 @@ void MaxwellDMA::HandleCopy() { | |||
| 50 | ASSERT(regs.dst_params.pos_y == 0); | 50 | ASSERT(regs.dst_params.pos_y == 0); |
| 51 | 51 | ||
| 52 | if (regs.exec.is_dst_linear == regs.exec.is_src_linear) { | 52 | if (regs.exec.is_dst_linear == regs.exec.is_src_linear) { |
| 53 | size_t copy_size = regs.x_count; | 53 | std::size_t copy_size = regs.x_count; |
| 54 | 54 | ||
| 55 | // When the enable_2d bit is disabled, the copy is performed as if we were copying a 1D | 55 | // When the enable_2d bit is disabled, the copy is performed as if we were copying a 1D |
| 56 | // buffer of length `x_count`, otherwise we copy a 2D buffer of size (x_count, y_count). | 56 | // buffer of length `x_count`, otherwise we copy a 2D buffer of size (x_count, y_count). |
diff --git a/src/video_core/engines/maxwell_dma.h b/src/video_core/engines/maxwell_dma.h index 7882f16e0..311ccb616 100644 --- a/src/video_core/engines/maxwell_dma.h +++ b/src/video_core/engines/maxwell_dma.h | |||
| @@ -23,7 +23,7 @@ public: | |||
| 23 | void WriteReg(u32 method, u32 value); | 23 | void WriteReg(u32 method, u32 value); |
| 24 | 24 | ||
| 25 | struct Regs { | 25 | struct Regs { |
| 26 | static constexpr size_t NUM_REGS = 0x1D6; | 26 | static constexpr std::size_t NUM_REGS = 0x1D6; |
| 27 | 27 | ||
| 28 | struct Parameters { | 28 | struct Parameters { |
| 29 | union { | 29 | union { |
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index 58f2904ce..d85c5883d 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h | |||
| @@ -20,10 +20,10 @@ namespace Tegra::Shader { | |||
| 20 | 20 | ||
| 21 | struct Register { | 21 | struct Register { |
| 22 | /// Number of registers | 22 | /// Number of registers |
| 23 | static constexpr size_t NumRegisters = 256; | 23 | static constexpr std::size_t NumRegisters = 256; |
| 24 | 24 | ||
| 25 | /// Register 255 is special cased to always be 0 | 25 | /// Register 255 is special cased to always be 0 |
| 26 | static constexpr size_t ZeroIndex = 255; | 26 | static constexpr std::size_t ZeroIndex = 255; |
| 27 | 27 | ||
| 28 | enum class Size : u64 { | 28 | enum class Size : u64 { |
| 29 | Byte = 0, | 29 | Byte = 0, |
| @@ -584,7 +584,7 @@ union Instruction { | |||
| 584 | BitField<31, 4, u64> component_mask; | 584 | BitField<31, 4, u64> component_mask; |
| 585 | BitField<55, 3, TextureProcessMode> process_mode; | 585 | BitField<55, 3, TextureProcessMode> process_mode; |
| 586 | 586 | ||
| 587 | bool IsComponentEnabled(size_t component) const { | 587 | bool IsComponentEnabled(std::size_t component) const { |
| 588 | return ((1ull << component) & component_mask) != 0; | 588 | return ((1ull << component) & component_mask) != 0; |
| 589 | } | 589 | } |
| 590 | } tex; | 590 | } tex; |
| @@ -599,7 +599,7 @@ union Instruction { | |||
| 599 | BitField<29, 2, TextureType> texture_type; | 599 | BitField<29, 2, TextureType> texture_type; |
| 600 | BitField<31, 4, u64> component_mask; | 600 | BitField<31, 4, u64> component_mask; |
| 601 | 601 | ||
| 602 | bool IsComponentEnabled(size_t component) const { | 602 | bool IsComponentEnabled(std::size_t component) const { |
| 603 | return ((1ull << component) & component_mask) != 0; | 603 | return ((1ull << component) & component_mask) != 0; |
| 604 | } | 604 | } |
| 605 | } tmml; | 605 | } tmml; |
| @@ -646,7 +646,7 @@ union Instruction { | |||
| 646 | return gpr28.Value() != Register::ZeroIndex; | 646 | return gpr28.Value() != Register::ZeroIndex; |
| 647 | } | 647 | } |
| 648 | 648 | ||
| 649 | bool IsComponentEnabled(size_t component) const { | 649 | bool IsComponentEnabled(std::size_t component) const { |
| 650 | static constexpr std::array<std::array<u32, 8>, 4> mask_lut{{ | 650 | static constexpr std::array<std::array<u32, 8>, 4> mask_lut{{ |
| 651 | {}, | 651 | {}, |
| 652 | {0x1, 0x2, 0x4, 0x8, 0x3, 0x9, 0xa, 0xc}, | 652 | {0x1, 0x2, 0x4, 0x8, 0x3, 0x9, 0xa, 0xc}, |
| @@ -654,7 +654,7 @@ union Instruction { | |||
| 654 | {0x7, 0xb, 0xd, 0xe, 0xf}, | 654 | {0x7, 0xb, 0xd, 0xe, 0xf}, |
| 655 | }}; | 655 | }}; |
| 656 | 656 | ||
| 657 | size_t index{gpr0.Value() != Register::ZeroIndex ? 1U : 0U}; | 657 | std::size_t index{gpr0.Value() != Register::ZeroIndex ? 1U : 0U}; |
| 658 | index |= gpr28.Value() != Register::ZeroIndex ? 2 : 0; | 658 | index |= gpr28.Value() != Register::ZeroIndex ? 2 : 0; |
| 659 | 659 | ||
| 660 | u32 mask = mask_lut[index][component_mask_selector]; | 660 | u32 mask = mask_lut[index][component_mask_selector]; |
| @@ -939,7 +939,7 @@ public: | |||
| 939 | private: | 939 | private: |
| 940 | struct Detail { | 940 | struct Detail { |
| 941 | private: | 941 | private: |
| 942 | static constexpr size_t opcode_bitsize = 16; | 942 | static constexpr std::size_t opcode_bitsize = 16; |
| 943 | 943 | ||
| 944 | /** | 944 | /** |
| 945 | * Generates the mask and the expected value after masking from a given bitstring. | 945 | * Generates the mask and the expected value after masking from a given bitstring. |
| @@ -948,8 +948,8 @@ private: | |||
| 948 | */ | 948 | */ |
| 949 | static auto GetMaskAndExpect(const char* const bitstring) { | 949 | static auto GetMaskAndExpect(const char* const bitstring) { |
| 950 | u16 mask = 0, expect = 0; | 950 | u16 mask = 0, expect = 0; |
| 951 | for (size_t i = 0; i < opcode_bitsize; i++) { | 951 | for (std::size_t i = 0; i < opcode_bitsize; i++) { |
| 952 | const size_t bit_position = opcode_bitsize - i - 1; | 952 | const std::size_t bit_position = opcode_bitsize - i - 1; |
| 953 | switch (bitstring[i]) { | 953 | switch (bitstring[i]) { |
| 954 | case '0': | 954 | case '0': |
| 955 | mask |= 1 << bit_position; | 955 | mask |= 1 << bit_position; |
diff --git a/src/video_core/macro_interpreter.h b/src/video_core/macro_interpreter.h index 7d836b816..cee0baaf3 100644 --- a/src/video_core/macro_interpreter.h +++ b/src/video_core/macro_interpreter.h | |||
| @@ -152,7 +152,7 @@ private: | |||
| 152 | boost::optional<u32> | 152 | boost::optional<u32> |
| 153 | delayed_pc; ///< Program counter to execute at after the delay slot is executed. | 153 | delayed_pc; ///< Program counter to execute at after the delay slot is executed. |
| 154 | 154 | ||
| 155 | static constexpr size_t NumMacroRegisters = 8; | 155 | static constexpr std::size_t NumMacroRegisters = 8; |
| 156 | 156 | ||
| 157 | /// General purpose macro registers. | 157 | /// General purpose macro registers. |
| 158 | std::array<u32, NumMacroRegisters> registers = {}; | 158 | std::array<u32, NumMacroRegisters> registers = {}; |
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp index 0b5d18bcb..578aca789 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp | |||
| @@ -12,10 +12,10 @@ | |||
| 12 | 12 | ||
| 13 | namespace OpenGL { | 13 | namespace OpenGL { |
| 14 | 14 | ||
| 15 | OGLBufferCache::OGLBufferCache(size_t size) : stream_buffer(GL_ARRAY_BUFFER, size) {} | 15 | OGLBufferCache::OGLBufferCache(std::size_t size) : stream_buffer(GL_ARRAY_BUFFER, size) {} |
| 16 | 16 | ||
| 17 | GLintptr OGLBufferCache::UploadMemory(Tegra::GPUVAddr gpu_addr, size_t size, size_t alignment, | 17 | GLintptr OGLBufferCache::UploadMemory(Tegra::GPUVAddr gpu_addr, std::size_t size, |
| 18 | bool cache) { | 18 | std::size_t alignment, bool cache) { |
| 19 | auto& memory_manager = Core::System::GetInstance().GPU().MemoryManager(); | 19 | auto& memory_manager = Core::System::GetInstance().GPU().MemoryManager(); |
| 20 | const boost::optional<VAddr> cpu_addr{memory_manager.GpuToCpuAddress(gpu_addr)}; | 20 | const boost::optional<VAddr> cpu_addr{memory_manager.GpuToCpuAddress(gpu_addr)}; |
| 21 | 21 | ||
| @@ -53,7 +53,8 @@ GLintptr OGLBufferCache::UploadMemory(Tegra::GPUVAddr gpu_addr, size_t size, siz | |||
| 53 | return uploaded_offset; | 53 | return uploaded_offset; |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | GLintptr OGLBufferCache::UploadHostMemory(const void* raw_pointer, size_t size, size_t alignment) { | 56 | GLintptr OGLBufferCache::UploadHostMemory(const void* raw_pointer, std::size_t size, |
| 57 | std::size_t alignment) { | ||
| 57 | AlignBuffer(alignment); | 58 | AlignBuffer(alignment); |
| 58 | std::memcpy(buffer_ptr, raw_pointer, size); | 59 | std::memcpy(buffer_ptr, raw_pointer, size); |
| 59 | GLintptr uploaded_offset = buffer_offset; | 60 | GLintptr uploaded_offset = buffer_offset; |
| @@ -63,7 +64,7 @@ GLintptr OGLBufferCache::UploadHostMemory(const void* raw_pointer, size_t size, | |||
| 63 | return uploaded_offset; | 64 | return uploaded_offset; |
| 64 | } | 65 | } |
| 65 | 66 | ||
| 66 | void OGLBufferCache::Map(size_t max_size) { | 67 | void OGLBufferCache::Map(std::size_t max_size) { |
| 67 | bool invalidate; | 68 | bool invalidate; |
| 68 | std::tie(buffer_ptr, buffer_offset_base, invalidate) = | 69 | std::tie(buffer_ptr, buffer_offset_base, invalidate) = |
| 69 | stream_buffer.Map(static_cast<GLsizeiptr>(max_size), 4); | 70 | stream_buffer.Map(static_cast<GLsizeiptr>(max_size), 4); |
| @@ -81,10 +82,10 @@ GLuint OGLBufferCache::GetHandle() const { | |||
| 81 | return stream_buffer.GetHandle(); | 82 | return stream_buffer.GetHandle(); |
| 82 | } | 83 | } |
| 83 | 84 | ||
| 84 | void OGLBufferCache::AlignBuffer(size_t alignment) { | 85 | void OGLBufferCache::AlignBuffer(std::size_t alignment) { |
| 85 | // Align the offset, not the mapped pointer | 86 | // Align the offset, not the mapped pointer |
| 86 | GLintptr offset_aligned = | 87 | GLintptr offset_aligned = |
| 87 | static_cast<GLintptr>(Common::AlignUp(static_cast<size_t>(buffer_offset), alignment)); | 88 | static_cast<GLintptr>(Common::AlignUp(static_cast<std::size_t>(buffer_offset), alignment)); |
| 88 | buffer_ptr += offset_aligned - buffer_offset; | 89 | buffer_ptr += offset_aligned - buffer_offset; |
| 89 | buffer_offset = offset_aligned; | 90 | buffer_offset = offset_aligned; |
| 90 | } | 91 | } |
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.h b/src/video_core/renderer_opengl/gl_buffer_cache.h index 6da862902..6c18461f4 100644 --- a/src/video_core/renderer_opengl/gl_buffer_cache.h +++ b/src/video_core/renderer_opengl/gl_buffer_cache.h | |||
| @@ -19,32 +19,32 @@ struct CachedBufferEntry final { | |||
| 19 | return addr; | 19 | return addr; |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | size_t GetSizeInBytes() const { | 22 | std::size_t GetSizeInBytes() const { |
| 23 | return size; | 23 | return size; |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | VAddr addr; | 26 | VAddr addr; |
| 27 | size_t size; | 27 | std::size_t size; |
| 28 | GLintptr offset; | 28 | GLintptr offset; |
| 29 | size_t alignment; | 29 | std::size_t alignment; |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | class OGLBufferCache final : public RasterizerCache<std::shared_ptr<CachedBufferEntry>> { | 32 | class OGLBufferCache final : public RasterizerCache<std::shared_ptr<CachedBufferEntry>> { |
| 33 | public: | 33 | public: |
| 34 | explicit OGLBufferCache(size_t size); | 34 | explicit OGLBufferCache(std::size_t size); |
| 35 | 35 | ||
| 36 | GLintptr UploadMemory(Tegra::GPUVAddr gpu_addr, size_t size, size_t alignment = 4, | 36 | GLintptr UploadMemory(Tegra::GPUVAddr gpu_addr, std::size_t size, std::size_t alignment = 4, |
| 37 | bool cache = true); | 37 | bool cache = true); |
| 38 | 38 | ||
| 39 | GLintptr UploadHostMemory(const void* raw_pointer, size_t size, size_t alignment = 4); | 39 | GLintptr UploadHostMemory(const void* raw_pointer, std::size_t size, std::size_t alignment = 4); |
| 40 | 40 | ||
| 41 | void Map(size_t max_size); | 41 | void Map(std::size_t max_size); |
| 42 | void Unmap(); | 42 | void Unmap(); |
| 43 | 43 | ||
| 44 | GLuint GetHandle() const; | 44 | GLuint GetHandle() const; |
| 45 | 45 | ||
| 46 | protected: | 46 | protected: |
| 47 | void AlignBuffer(size_t alignment); | 47 | void AlignBuffer(std::size_t alignment); |
| 48 | 48 | ||
| 49 | private: | 49 | private: |
| 50 | OGLStreamBuffer stream_buffer; | 50 | OGLStreamBuffer stream_buffer; |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 7e1bba67d..274c2dbcf 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -46,7 +46,7 @@ MICROPROFILE_DEFINE(OpenGL_CacheManagement, "OpenGL", "Cache Mgmt", MP_RGB(100, | |||
| 46 | RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& window, ScreenInfo& info) | 46 | RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& window, ScreenInfo& info) |
| 47 | : emu_window{window}, screen_info{info}, buffer_cache(STREAM_BUFFER_SIZE) { | 47 | : emu_window{window}, screen_info{info}, buffer_cache(STREAM_BUFFER_SIZE) { |
| 48 | // Create sampler objects | 48 | // Create sampler objects |
| 49 | for (size_t i = 0; i < texture_samplers.size(); ++i) { | 49 | for (std::size_t i = 0; i < texture_samplers.size(); ++i) { |
| 50 | texture_samplers[i].Create(); | 50 | texture_samplers[i].Create(); |
| 51 | state.texture_units[i].sampler = texture_samplers[i].sampler.handle; | 51 | state.texture_units[i].sampler = texture_samplers[i].sampler.handle; |
| 52 | } | 52 | } |
| @@ -181,7 +181,7 @@ void RasterizerOpenGL::SetupShaders() { | |||
| 181 | u32 current_constbuffer_bindpoint = Tegra::Engines::Maxwell3D::Regs::MaxShaderStage; | 181 | u32 current_constbuffer_bindpoint = Tegra::Engines::Maxwell3D::Regs::MaxShaderStage; |
| 182 | u32 current_texture_bindpoint = 0; | 182 | u32 current_texture_bindpoint = 0; |
| 183 | 183 | ||
| 184 | for (size_t index = 0; index < Maxwell::MaxShaderProgram; ++index) { | 184 | for (std::size_t index = 0; index < Maxwell::MaxShaderProgram; ++index) { |
| 185 | const auto& shader_config = gpu.regs.shader_config[index]; | 185 | const auto& shader_config = gpu.regs.shader_config[index]; |
| 186 | const Maxwell::ShaderProgram program{static_cast<Maxwell::ShaderProgram>(index)}; | 186 | const Maxwell::ShaderProgram program{static_cast<Maxwell::ShaderProgram>(index)}; |
| 187 | 187 | ||
| @@ -190,12 +190,12 @@ void RasterizerOpenGL::SetupShaders() { | |||
| 190 | continue; | 190 | continue; |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | const size_t stage{index == 0 ? 0 : index - 1}; // Stage indices are 0 - 5 | 193 | const std::size_t stage{index == 0 ? 0 : index - 1}; // Stage indices are 0 - 5 |
| 194 | 194 | ||
| 195 | GLShader::MaxwellUniformData ubo{}; | 195 | GLShader::MaxwellUniformData ubo{}; |
| 196 | ubo.SetFromRegs(gpu.state.shader_stages[stage]); | 196 | ubo.SetFromRegs(gpu.state.shader_stages[stage]); |
| 197 | const GLintptr offset = buffer_cache.UploadHostMemory( | 197 | const GLintptr offset = buffer_cache.UploadHostMemory( |
| 198 | &ubo, sizeof(ubo), static_cast<size_t>(uniform_buffer_alignment)); | 198 | &ubo, sizeof(ubo), static_cast<std::size_t>(uniform_buffer_alignment)); |
| 199 | 199 | ||
| 200 | // Bind the buffer | 200 | // Bind the buffer |
| 201 | glBindBufferRange(GL_UNIFORM_BUFFER, stage, buffer_cache.GetHandle(), offset, sizeof(ubo)); | 201 | glBindBufferRange(GL_UNIFORM_BUFFER, stage, buffer_cache.GetHandle(), offset, sizeof(ubo)); |
| @@ -238,10 +238,10 @@ void RasterizerOpenGL::SetupShaders() { | |||
| 238 | shader_program_manager->UseTrivialGeometryShader(); | 238 | shader_program_manager->UseTrivialGeometryShader(); |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | size_t RasterizerOpenGL::CalculateVertexArraysSize() const { | 241 | std::size_t RasterizerOpenGL::CalculateVertexArraysSize() const { |
| 242 | const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; | 242 | const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; |
| 243 | 243 | ||
| 244 | size_t size = 0; | 244 | std::size_t size = 0; |
| 245 | for (u32 index = 0; index < Maxwell::NumVertexArrays; ++index) { | 245 | for (u32 index = 0; index < Maxwell::NumVertexArrays; ++index) { |
| 246 | if (!regs.vertex_array[index].IsEnabled()) | 246 | if (!regs.vertex_array[index].IsEnabled()) |
| 247 | continue; | 247 | continue; |
| @@ -299,7 +299,7 @@ void RasterizerOpenGL::UpdatePagesCachedCount(VAddr addr, u64 size, int delta) { | |||
| 299 | 299 | ||
| 300 | void RasterizerOpenGL::ConfigureFramebuffers(bool using_color_fb, bool using_depth_fb, | 300 | void RasterizerOpenGL::ConfigureFramebuffers(bool using_color_fb, bool using_depth_fb, |
| 301 | bool preserve_contents, | 301 | bool preserve_contents, |
| 302 | boost::optional<size_t> single_color_target) { | 302 | boost::optional<std::size_t> single_color_target) { |
| 303 | MICROPROFILE_SCOPE(OpenGL_Framebuffer); | 303 | MICROPROFILE_SCOPE(OpenGL_Framebuffer); |
| 304 | const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; | 304 | const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; |
| 305 | 305 | ||
| @@ -330,7 +330,7 @@ void RasterizerOpenGL::ConfigureFramebuffers(bool using_color_fb, bool using_dep | |||
| 330 | } else { | 330 | } else { |
| 331 | // Multiple color attachments are enabled | 331 | // Multiple color attachments are enabled |
| 332 | std::array<GLenum, Maxwell::NumRenderTargets> buffers; | 332 | std::array<GLenum, Maxwell::NumRenderTargets> buffers; |
| 333 | for (size_t index = 0; index < Maxwell::NumRenderTargets; ++index) { | 333 | for (std::size_t index = 0; index < Maxwell::NumRenderTargets; ++index) { |
| 334 | Surface color_surface = res_cache.GetColorBufferSurface(index, preserve_contents); | 334 | Surface color_surface = res_cache.GetColorBufferSurface(index, preserve_contents); |
| 335 | buffers[index] = GL_COLOR_ATTACHMENT0 + regs.rt_control.GetMap(index); | 335 | buffers[index] = GL_COLOR_ATTACHMENT0 + regs.rt_control.GetMap(index); |
| 336 | glFramebufferTexture2D( | 336 | glFramebufferTexture2D( |
| @@ -342,7 +342,7 @@ void RasterizerOpenGL::ConfigureFramebuffers(bool using_color_fb, bool using_dep | |||
| 342 | } | 342 | } |
| 343 | } else { | 343 | } else { |
| 344 | // No color attachments are enabled - zero out all of them | 344 | // No color attachments are enabled - zero out all of them |
| 345 | for (size_t index = 0; index < Maxwell::NumRenderTargets; ++index) { | 345 | for (std::size_t index = 0; index < Maxwell::NumRenderTargets; ++index) { |
| 346 | glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, | 346 | glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, |
| 347 | GL_COLOR_ATTACHMENT0 + static_cast<GLenum>(index), GL_TEXTURE_2D, | 347 | GL_COLOR_ATTACHMENT0 + static_cast<GLenum>(index), GL_TEXTURE_2D, |
| 348 | 0, 0); | 348 | 0, 0); |
| @@ -462,15 +462,15 @@ void RasterizerOpenGL::DrawArrays() { | |||
| 462 | state.draw.vertex_buffer = buffer_cache.GetHandle(); | 462 | state.draw.vertex_buffer = buffer_cache.GetHandle(); |
| 463 | state.Apply(); | 463 | state.Apply(); |
| 464 | 464 | ||
| 465 | size_t buffer_size = CalculateVertexArraysSize(); | 465 | std::size_t buffer_size = CalculateVertexArraysSize(); |
| 466 | 466 | ||
| 467 | if (is_indexed) { | 467 | if (is_indexed) { |
| 468 | buffer_size = Common::AlignUp<size_t>(buffer_size, 4) + index_buffer_size; | 468 | buffer_size = Common::AlignUp<std::size_t>(buffer_size, 4) + index_buffer_size; |
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | // Uniform space for the 5 shader stages | 471 | // Uniform space for the 5 shader stages |
| 472 | buffer_size = | 472 | buffer_size = |
| 473 | Common::AlignUp<size_t>(buffer_size, 4) + | 473 | Common::AlignUp<std::size_t>(buffer_size, 4) + |
| 474 | (sizeof(GLShader::MaxwellUniformData) + uniform_buffer_alignment) * Maxwell::MaxShaderStage; | 474 | (sizeof(GLShader::MaxwellUniformData) + uniform_buffer_alignment) * Maxwell::MaxShaderStage; |
| 475 | 475 | ||
| 476 | // Add space for at least 18 constant buffers | 476 | // Add space for at least 18 constant buffers |
| @@ -644,7 +644,7 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, Shader& shad | |||
| 644 | MICROPROFILE_SCOPE(OpenGL_UBO); | 644 | MICROPROFILE_SCOPE(OpenGL_UBO); |
| 645 | const auto& gpu = Core::System::GetInstance().GPU(); | 645 | const auto& gpu = Core::System::GetInstance().GPU(); |
| 646 | const auto& maxwell3d = gpu.Maxwell3D(); | 646 | const auto& maxwell3d = gpu.Maxwell3D(); |
| 647 | const auto& shader_stage = maxwell3d.state.shader_stages[static_cast<size_t>(stage)]; | 647 | const auto& shader_stage = maxwell3d.state.shader_stages[static_cast<std::size_t>(stage)]; |
| 648 | const auto& entries = shader->GetShaderEntries().const_buffer_entries; | 648 | const auto& entries = shader->GetShaderEntries().const_buffer_entries; |
| 649 | 649 | ||
| 650 | constexpr u64 max_binds = Tegra::Engines::Maxwell3D::Regs::MaxConstBuffers; | 650 | constexpr u64 max_binds = Tegra::Engines::Maxwell3D::Regs::MaxConstBuffers; |
| @@ -667,7 +667,7 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, Shader& shad | |||
| 667 | continue; | 667 | continue; |
| 668 | } | 668 | } |
| 669 | 669 | ||
| 670 | size_t size = 0; | 670 | std::size_t size = 0; |
| 671 | 671 | ||
| 672 | if (used_buffer.IsIndirect()) { | 672 | if (used_buffer.IsIndirect()) { |
| 673 | // Buffer is accessed indirectly, so upload the entire thing | 673 | // Buffer is accessed indirectly, so upload the entire thing |
| @@ -689,7 +689,7 @@ u32 RasterizerOpenGL::SetupConstBuffers(Maxwell::ShaderStage stage, Shader& shad | |||
| 689 | ASSERT_MSG(size <= MaxConstbufferSize, "Constbuffer too big"); | 689 | ASSERT_MSG(size <= MaxConstbufferSize, "Constbuffer too big"); |
| 690 | 690 | ||
| 691 | GLintptr const_buffer_offset = buffer_cache.UploadMemory( | 691 | GLintptr const_buffer_offset = buffer_cache.UploadMemory( |
| 692 | buffer.address, size, static_cast<size_t>(uniform_buffer_alignment)); | 692 | buffer.address, size, static_cast<std::size_t>(uniform_buffer_alignment)); |
| 693 | 693 | ||
| 694 | // Now configure the bindpoint of the buffer inside the shader | 694 | // Now configure the bindpoint of the buffer inside the shader |
| 695 | glUniformBlockBinding(shader->GetProgramHandle(), | 695 | glUniformBlockBinding(shader->GetProgramHandle(), |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 163412882..bf9560bdc 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -73,7 +73,7 @@ public: | |||
| 73 | }; | 73 | }; |
| 74 | 74 | ||
| 75 | /// Maximum supported size that a constbuffer can have in bytes. | 75 | /// Maximum supported size that a constbuffer can have in bytes. |
| 76 | static constexpr size_t MaxConstbufferSize = 0x10000; | 76 | static constexpr std::size_t MaxConstbufferSize = 0x10000; |
| 77 | static_assert(MaxConstbufferSize % sizeof(GLvec4) == 0, | 77 | static_assert(MaxConstbufferSize % sizeof(GLvec4) == 0, |
| 78 | "The maximum size of a constbuffer must be a multiple of the size of GLvec4"); | 78 | "The maximum size of a constbuffer must be a multiple of the size of GLvec4"); |
| 79 | 79 | ||
| @@ -106,7 +106,7 @@ private: | |||
| 106 | */ | 106 | */ |
| 107 | void ConfigureFramebuffers(bool use_color_fb = true, bool using_depth_fb = true, | 107 | void ConfigureFramebuffers(bool use_color_fb = true, bool using_depth_fb = true, |
| 108 | bool preserve_contents = true, | 108 | bool preserve_contents = true, |
| 109 | boost::optional<size_t> single_color_target = {}); | 109 | boost::optional<std::size_t> single_color_target = {}); |
| 110 | 110 | ||
| 111 | /* | 111 | /* |
| 112 | * Configures the current constbuffers to use for the draw command. | 112 | * Configures the current constbuffers to use for the draw command. |
| @@ -180,12 +180,12 @@ private: | |||
| 180 | 180 | ||
| 181 | std::array<SamplerInfo, GLShader::NumTextureSamplers> texture_samplers; | 181 | std::array<SamplerInfo, GLShader::NumTextureSamplers> texture_samplers; |
| 182 | 182 | ||
| 183 | static constexpr size_t STREAM_BUFFER_SIZE = 128 * 1024 * 1024; | 183 | static constexpr std::size_t STREAM_BUFFER_SIZE = 128 * 1024 * 1024; |
| 184 | OGLBufferCache buffer_cache; | 184 | OGLBufferCache buffer_cache; |
| 185 | OGLFramebuffer framebuffer; | 185 | OGLFramebuffer framebuffer; |
| 186 | GLint uniform_buffer_alignment; | 186 | GLint uniform_buffer_alignment; |
| 187 | 187 | ||
| 188 | size_t CalculateVertexArraysSize() const; | 188 | std::size_t CalculateVertexArraysSize() const; |
| 189 | 189 | ||
| 190 | void SetupVertexArrays(); | 190 | void SetupVertexArrays(); |
| 191 | 191 | ||
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 32001e44b..3f385484f 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | |||
| @@ -75,7 +75,7 @@ static VAddr TryGetCpuAddr(Tegra::GPUVAddr gpu_addr) { | |||
| 75 | return params; | 75 | return params; |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | /*static*/ SurfaceParams SurfaceParams::CreateForFramebuffer(size_t index) { | 78 | /*static*/ SurfaceParams SurfaceParams::CreateForFramebuffer(std::size_t index) { |
| 79 | const auto& config{Core::System::GetInstance().GPU().Maxwell3D().regs.rt[index]}; | 79 | const auto& config{Core::System::GetInstance().GPU().Maxwell3D().regs.rt[index]}; |
| 80 | SurfaceParams params{}; | 80 | SurfaceParams params{}; |
| 81 | params.addr = TryGetCpuAddr(config.Address()); | 81 | params.addr = TryGetCpuAddr(config.Address()); |
| @@ -203,7 +203,7 @@ static GLenum SurfaceTargetToGL(SurfaceParams::SurfaceTarget target) { | |||
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | static const FormatTuple& GetFormatTuple(PixelFormat pixel_format, ComponentType component_type) { | 205 | static const FormatTuple& GetFormatTuple(PixelFormat pixel_format, ComponentType component_type) { |
| 206 | ASSERT(static_cast<size_t>(pixel_format) < tex_format_tuples.size()); | 206 | ASSERT(static_cast<std::size_t>(pixel_format) < tex_format_tuples.size()); |
| 207 | auto& format = tex_format_tuples[static_cast<unsigned int>(pixel_format)]; | 207 | auto& format = tex_format_tuples[static_cast<unsigned int>(pixel_format)]; |
| 208 | ASSERT(component_type == format.component_type); | 208 | ASSERT(component_type == format.component_type); |
| 209 | 209 | ||
| @@ -256,7 +256,7 @@ static bool IsFormatBCn(PixelFormat format) { | |||
| 256 | } | 256 | } |
| 257 | 257 | ||
| 258 | template <bool morton_to_gl, PixelFormat format> | 258 | template <bool morton_to_gl, PixelFormat format> |
| 259 | void MortonCopy(u32 stride, u32 block_height, u32 height, u8* gl_buffer, size_t gl_buffer_size, | 259 | void MortonCopy(u32 stride, u32 block_height, u32 height, u8* gl_buffer, std::size_t gl_buffer_size, |
| 260 | VAddr addr) { | 260 | VAddr addr) { |
| 261 | constexpr u32 bytes_per_pixel = SurfaceParams::GetFormatBpp(format) / CHAR_BIT; | 261 | constexpr u32 bytes_per_pixel = SurfaceParams::GetFormatBpp(format) / CHAR_BIT; |
| 262 | constexpr u32 gl_bytes_per_pixel = CachedSurface::GetGLBytesPerPixel(format); | 262 | constexpr u32 gl_bytes_per_pixel = CachedSurface::GetGLBytesPerPixel(format); |
| @@ -267,7 +267,7 @@ void MortonCopy(u32 stride, u32 block_height, u32 height, u8* gl_buffer, size_t | |||
| 267 | const u32 tile_size{IsFormatBCn(format) ? 4U : 1U}; | 267 | const u32 tile_size{IsFormatBCn(format) ? 4U : 1U}; |
| 268 | const std::vector<u8> data = Tegra::Texture::UnswizzleTexture( | 268 | const std::vector<u8> data = Tegra::Texture::UnswizzleTexture( |
| 269 | addr, tile_size, bytes_per_pixel, stride, height, block_height); | 269 | addr, tile_size, bytes_per_pixel, stride, height, block_height); |
| 270 | const size_t size_to_copy{std::min(gl_buffer_size, data.size())}; | 270 | const std::size_t size_to_copy{std::min(gl_buffer_size, data.size())}; |
| 271 | memcpy(gl_buffer, data.data(), size_to_copy); | 271 | memcpy(gl_buffer, data.data(), size_to_copy); |
| 272 | } else { | 272 | } else { |
| 273 | // TODO(bunnei): Assumes the default rendering GOB size of 16 (128 lines). We should | 273 | // TODO(bunnei): Assumes the default rendering GOB size of 16 (128 lines). We should |
| @@ -278,7 +278,7 @@ void MortonCopy(u32 stride, u32 block_height, u32 height, u8* gl_buffer, size_t | |||
| 278 | } | 278 | } |
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | static constexpr std::array<void (*)(u32, u32, u32, u8*, size_t, VAddr), | 281 | static constexpr std::array<void (*)(u32, u32, u32, u8*, std::size_t, VAddr), |
| 282 | SurfaceParams::MaxPixelFormat> | 282 | SurfaceParams::MaxPixelFormat> |
| 283 | morton_to_gl_fns = { | 283 | morton_to_gl_fns = { |
| 284 | // clang-format off | 284 | // clang-format off |
| @@ -335,7 +335,7 @@ static constexpr std::array<void (*)(u32, u32, u32, u8*, size_t, VAddr), | |||
| 335 | // clang-format on | 335 | // clang-format on |
| 336 | }; | 336 | }; |
| 337 | 337 | ||
| 338 | static constexpr std::array<void (*)(u32, u32, u32, u8*, size_t, VAddr), | 338 | static constexpr std::array<void (*)(u32, u32, u32, u8*, std::size_t, VAddr), |
| 339 | SurfaceParams::MaxPixelFormat> | 339 | SurfaceParams::MaxPixelFormat> |
| 340 | gl_to_morton_fns = { | 340 | gl_to_morton_fns = { |
| 341 | // clang-format off | 341 | // clang-format off |
| @@ -513,9 +513,9 @@ static void ConvertS8Z24ToZ24S8(std::vector<u8>& data, u32 width, u32 height) { | |||
| 513 | S8Z24 input_pixel{}; | 513 | S8Z24 input_pixel{}; |
| 514 | Z24S8 output_pixel{}; | 514 | Z24S8 output_pixel{}; |
| 515 | constexpr auto bpp{CachedSurface::GetGLBytesPerPixel(PixelFormat::S8Z24)}; | 515 | constexpr auto bpp{CachedSurface::GetGLBytesPerPixel(PixelFormat::S8Z24)}; |
| 516 | for (size_t y = 0; y < height; ++y) { | 516 | for (std::size_t y = 0; y < height; ++y) { |
| 517 | for (size_t x = 0; x < width; ++x) { | 517 | for (std::size_t x = 0; x < width; ++x) { |
| 518 | const size_t offset{bpp * (y * width + x)}; | 518 | const std::size_t offset{bpp * (y * width + x)}; |
| 519 | std::memcpy(&input_pixel, &data[offset], sizeof(S8Z24)); | 519 | std::memcpy(&input_pixel, &data[offset], sizeof(S8Z24)); |
| 520 | output_pixel.s8.Assign(input_pixel.s8); | 520 | output_pixel.s8.Assign(input_pixel.s8); |
| 521 | output_pixel.z24.Assign(input_pixel.z24); | 521 | output_pixel.z24.Assign(input_pixel.z24); |
| @@ -526,9 +526,9 @@ static void ConvertS8Z24ToZ24S8(std::vector<u8>& data, u32 width, u32 height) { | |||
| 526 | 526 | ||
| 527 | static void ConvertG8R8ToR8G8(std::vector<u8>& data, u32 width, u32 height) { | 527 | static void ConvertG8R8ToR8G8(std::vector<u8>& data, u32 width, u32 height) { |
| 528 | constexpr auto bpp{CachedSurface::GetGLBytesPerPixel(PixelFormat::G8R8U)}; | 528 | constexpr auto bpp{CachedSurface::GetGLBytesPerPixel(PixelFormat::G8R8U)}; |
| 529 | for (size_t y = 0; y < height; ++y) { | 529 | for (std::size_t y = 0; y < height; ++y) { |
| 530 | for (size_t x = 0; x < width; ++x) { | 530 | for (std::size_t x = 0; x < width; ++x) { |
| 531 | const size_t offset{bpp * (y * width + x)}; | 531 | const std::size_t offset{bpp * (y * width + x)}; |
| 532 | const u8 temp{data[offset]}; | 532 | const u8 temp{data[offset]}; |
| 533 | data[offset] = data[offset + 1]; | 533 | data[offset] = data[offset + 1]; |
| 534 | data[offset + 1] = temp; | 534 | data[offset + 1] = temp; |
| @@ -591,13 +591,13 @@ void CachedSurface::LoadGLBuffer() { | |||
| 591 | UNREACHABLE(); | 591 | UNREACHABLE(); |
| 592 | } | 592 | } |
| 593 | 593 | ||
| 594 | gl_buffer.resize(static_cast<size_t>(params.depth) * copy_size); | 594 | gl_buffer.resize(static_cast<std::size_t>(params.depth) * copy_size); |
| 595 | morton_to_gl_fns[static_cast<size_t>(params.pixel_format)]( | 595 | morton_to_gl_fns[static_cast<std::size_t>(params.pixel_format)]( |
| 596 | params.width, params.block_height, params.height, gl_buffer.data(), copy_size, | 596 | params.width, params.block_height, params.height, gl_buffer.data(), copy_size, |
| 597 | params.addr); | 597 | params.addr); |
| 598 | } else { | 598 | } else { |
| 599 | const u8* const texture_src_data_end{texture_src_data + | 599 | const u8* const texture_src_data_end{texture_src_data + |
| 600 | (static_cast<size_t>(params.depth) * copy_size)}; | 600 | (static_cast<std::size_t>(params.depth) * copy_size)}; |
| 601 | gl_buffer.assign(texture_src_data, texture_src_data_end); | 601 | gl_buffer.assign(texture_src_data, texture_src_data_end); |
| 602 | } | 602 | } |
| 603 | 603 | ||
| @@ -616,7 +616,7 @@ void CachedSurface::UploadGLTexture(GLuint read_fb_handle, GLuint draw_fb_handle | |||
| 616 | 616 | ||
| 617 | MICROPROFILE_SCOPE(OpenGL_TextureUL); | 617 | MICROPROFILE_SCOPE(OpenGL_TextureUL); |
| 618 | 618 | ||
| 619 | ASSERT(gl_buffer.size() == static_cast<size_t>(params.width) * params.height * | 619 | ASSERT(gl_buffer.size() == static_cast<std::size_t>(params.width) * params.height * |
| 620 | GetGLBytesPerPixel(params.pixel_format) * params.depth); | 620 | GetGLBytesPerPixel(params.pixel_format) * params.depth); |
| 621 | 621 | ||
| 622 | const auto& rect{params.GetRect()}; | 622 | const auto& rect{params.GetRect()}; |
| @@ -624,8 +624,9 @@ void CachedSurface::UploadGLTexture(GLuint read_fb_handle, GLuint draw_fb_handle | |||
| 624 | // Load data from memory to the surface | 624 | // Load data from memory to the surface |
| 625 | const GLint x0 = static_cast<GLint>(rect.left); | 625 | const GLint x0 = static_cast<GLint>(rect.left); |
| 626 | const GLint y0 = static_cast<GLint>(rect.bottom); | 626 | const GLint y0 = static_cast<GLint>(rect.bottom); |
| 627 | const size_t buffer_offset = | 627 | const std::size_t buffer_offset = |
| 628 | static_cast<size_t>(static_cast<size_t>(y0) * params.width + static_cast<size_t>(x0)) * | 628 | static_cast<std::size_t>(static_cast<std::size_t>(y0) * params.width + |
| 629 | static_cast<std::size_t>(x0)) * | ||
| 629 | GetGLBytesPerPixel(params.pixel_format); | 630 | GetGLBytesPerPixel(params.pixel_format); |
| 630 | 631 | ||
| 631 | const FormatTuple& tuple = GetFormatTuple(params.pixel_format, params.component_type); | 632 | const FormatTuple& tuple = GetFormatTuple(params.pixel_format, params.component_type); |
| @@ -727,7 +728,7 @@ Surface RasterizerCacheOpenGL::GetDepthBufferSurface(bool preserve_contents) { | |||
| 727 | return GetSurface(depth_params, preserve_contents); | 728 | return GetSurface(depth_params, preserve_contents); |
| 728 | } | 729 | } |
| 729 | 730 | ||
| 730 | Surface RasterizerCacheOpenGL::GetColorBufferSurface(size_t index, bool preserve_contents) { | 731 | Surface RasterizerCacheOpenGL::GetColorBufferSurface(std::size_t index, bool preserve_contents) { |
| 731 | const auto& regs{Core::System::GetInstance().GPU().Maxwell3D().regs}; | 732 | const auto& regs{Core::System::GetInstance().GPU().Maxwell3D().regs}; |
| 732 | 733 | ||
| 733 | ASSERT(index < Tegra::Engines::Maxwell3D::Regs::NumRenderTargets); | 734 | ASSERT(index < Tegra::Engines::Maxwell3D::Regs::NumRenderTargets); |
| @@ -825,7 +826,7 @@ Surface RasterizerCacheOpenGL::RecreateSurface(const Surface& surface, | |||
| 825 | auto source_format = GetFormatTuple(params.pixel_format, params.component_type); | 826 | auto source_format = GetFormatTuple(params.pixel_format, params.component_type); |
| 826 | auto dest_format = GetFormatTuple(new_params.pixel_format, new_params.component_type); | 827 | auto dest_format = GetFormatTuple(new_params.pixel_format, new_params.component_type); |
| 827 | 828 | ||
| 828 | size_t buffer_size = std::max(params.SizeInBytes(), new_params.SizeInBytes()); | 829 | std::size_t buffer_size = std::max(params.SizeInBytes(), new_params.SizeInBytes()); |
| 829 | 830 | ||
| 830 | glBindBuffer(GL_PIXEL_PACK_BUFFER, copy_pbo.handle); | 831 | glBindBuffer(GL_PIXEL_PACK_BUFFER, copy_pbo.handle); |
| 831 | glBufferData(GL_PIXEL_PACK_BUFFER, buffer_size, nullptr, GL_STREAM_DRAW_ARB); | 832 | glBufferData(GL_PIXEL_PACK_BUFFER, buffer_size, nullptr, GL_STREAM_DRAW_ARB); |
| @@ -849,7 +850,7 @@ Surface RasterizerCacheOpenGL::RecreateSurface(const Surface& surface, | |||
| 849 | LOG_DEBUG(HW_GPU, "Trying to upload extra texture data from the CPU during " | 850 | LOG_DEBUG(HW_GPU, "Trying to upload extra texture data from the CPU during " |
| 850 | "reinterpretation but the texture is tiled."); | 851 | "reinterpretation but the texture is tiled."); |
| 851 | } | 852 | } |
| 852 | size_t remaining_size = new_params.SizeInBytes() - params.SizeInBytes(); | 853 | std::size_t remaining_size = new_params.SizeInBytes() - params.SizeInBytes(); |
| 853 | std::vector<u8> data(remaining_size); | 854 | std::vector<u8> data(remaining_size); |
| 854 | Memory::ReadBlock(new_params.addr + params.SizeInBytes(), data.data(), data.size()); | 855 | Memory::ReadBlock(new_params.addr + params.SizeInBytes(), data.data(), data.size()); |
| 855 | glBufferSubData(GL_PIXEL_PACK_BUFFER, params.SizeInBytes(), remaining_size, | 856 | glBufferSubData(GL_PIXEL_PACK_BUFFER, params.SizeInBytes(), remaining_size, |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h index 57ea8593b..aafac9a20 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.h +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h | |||
| @@ -90,7 +90,7 @@ struct SurfaceParams { | |||
| 90 | Invalid = 255, | 90 | Invalid = 255, |
| 91 | }; | 91 | }; |
| 92 | 92 | ||
| 93 | static constexpr size_t MaxPixelFormat = static_cast<size_t>(PixelFormat::Max); | 93 | static constexpr std::size_t MaxPixelFormat = static_cast<std::size_t>(PixelFormat::Max); |
| 94 | 94 | ||
| 95 | enum class ComponentType { | 95 | enum class ComponentType { |
| 96 | Invalid = 0, | 96 | Invalid = 0, |
| @@ -199,8 +199,8 @@ struct SurfaceParams { | |||
| 199 | 1, // Z32FS8 | 199 | 1, // Z32FS8 |
| 200 | }}; | 200 | }}; |
| 201 | 201 | ||
| 202 | ASSERT(static_cast<size_t>(format) < compression_factor_table.size()); | 202 | ASSERT(static_cast<std::size_t>(format) < compression_factor_table.size()); |
| 203 | return compression_factor_table[static_cast<size_t>(format)]; | 203 | return compression_factor_table[static_cast<std::size_t>(format)]; |
| 204 | } | 204 | } |
| 205 | 205 | ||
| 206 | static constexpr u32 GetFormatBpp(PixelFormat format) { | 206 | static constexpr u32 GetFormatBpp(PixelFormat format) { |
| @@ -260,8 +260,8 @@ struct SurfaceParams { | |||
| 260 | 64, // Z32FS8 | 260 | 64, // Z32FS8 |
| 261 | }}; | 261 | }}; |
| 262 | 262 | ||
| 263 | ASSERT(static_cast<size_t>(format) < bpp_table.size()); | 263 | ASSERT(static_cast<std::size_t>(format) < bpp_table.size()); |
| 264 | return bpp_table[static_cast<size_t>(format)]; | 264 | return bpp_table[static_cast<std::size_t>(format)]; |
| 265 | } | 265 | } |
| 266 | 266 | ||
| 267 | u32 GetFormatBpp() const { | 267 | u32 GetFormatBpp() const { |
| @@ -636,16 +636,18 @@ struct SurfaceParams { | |||
| 636 | } | 636 | } |
| 637 | 637 | ||
| 638 | static SurfaceType GetFormatType(PixelFormat pixel_format) { | 638 | static SurfaceType GetFormatType(PixelFormat pixel_format) { |
| 639 | if (static_cast<size_t>(pixel_format) < static_cast<size_t>(PixelFormat::MaxColorFormat)) { | 639 | if (static_cast<std::size_t>(pixel_format) < |
| 640 | static_cast<std::size_t>(PixelFormat::MaxColorFormat)) { | ||
| 640 | return SurfaceType::ColorTexture; | 641 | return SurfaceType::ColorTexture; |
| 641 | } | 642 | } |
| 642 | 643 | ||
| 643 | if (static_cast<size_t>(pixel_format) < static_cast<size_t>(PixelFormat::MaxDepthFormat)) { | 644 | if (static_cast<std::size_t>(pixel_format) < |
| 645 | static_cast<std::size_t>(PixelFormat::MaxDepthFormat)) { | ||
| 644 | return SurfaceType::Depth; | 646 | return SurfaceType::Depth; |
| 645 | } | 647 | } |
| 646 | 648 | ||
| 647 | if (static_cast<size_t>(pixel_format) < | 649 | if (static_cast<std::size_t>(pixel_format) < |
| 648 | static_cast<size_t>(PixelFormat::MaxDepthStencilFormat)) { | 650 | static_cast<std::size_t>(PixelFormat::MaxDepthStencilFormat)) { |
| 649 | return SurfaceType::DepthStencil; | 651 | return SurfaceType::DepthStencil; |
| 650 | } | 652 | } |
| 651 | 653 | ||
| @@ -659,7 +661,7 @@ struct SurfaceParams { | |||
| 659 | MathUtil::Rectangle<u32> GetRect() const; | 661 | MathUtil::Rectangle<u32> GetRect() const; |
| 660 | 662 | ||
| 661 | /// Returns the size of this surface in bytes, adjusted for compression | 663 | /// Returns the size of this surface in bytes, adjusted for compression |
| 662 | size_t SizeInBytes() const { | 664 | std::size_t SizeInBytes() const { |
| 663 | const u32 compression_factor{GetCompressionFactor(pixel_format)}; | 665 | const u32 compression_factor{GetCompressionFactor(pixel_format)}; |
| 664 | ASSERT(width % compression_factor == 0); | 666 | ASSERT(width % compression_factor == 0); |
| 665 | ASSERT(height % compression_factor == 0); | 667 | ASSERT(height % compression_factor == 0); |
| @@ -671,7 +673,7 @@ struct SurfaceParams { | |||
| 671 | static SurfaceParams CreateForTexture(const Tegra::Texture::FullTextureInfo& config); | 673 | static SurfaceParams CreateForTexture(const Tegra::Texture::FullTextureInfo& config); |
| 672 | 674 | ||
| 673 | /// Creates SurfaceParams from a framebuffer configuration | 675 | /// Creates SurfaceParams from a framebuffer configuration |
| 674 | static SurfaceParams CreateForFramebuffer(size_t index); | 676 | static SurfaceParams CreateForFramebuffer(std::size_t index); |
| 675 | 677 | ||
| 676 | /// Creates SurfaceParams for a depth buffer configuration | 678 | /// Creates SurfaceParams for a depth buffer configuration |
| 677 | static SurfaceParams CreateForDepthBuffer(u32 zeta_width, u32 zeta_height, | 679 | static SurfaceParams CreateForDepthBuffer(u32 zeta_width, u32 zeta_height, |
| @@ -694,7 +696,7 @@ struct SurfaceParams { | |||
| 694 | u32 height; | 696 | u32 height; |
| 695 | u32 depth; | 697 | u32 depth; |
| 696 | u32 unaligned_height; | 698 | u32 unaligned_height; |
| 697 | size_t size_in_bytes; | 699 | std::size_t size_in_bytes; |
| 698 | SurfaceTarget target; | 700 | SurfaceTarget target; |
| 699 | }; | 701 | }; |
| 700 | 702 | ||
| @@ -711,7 +713,7 @@ struct SurfaceReserveKey : Common::HashableStruct<OpenGL::SurfaceParams> { | |||
| 711 | namespace std { | 713 | namespace std { |
| 712 | template <> | 714 | template <> |
| 713 | struct hash<SurfaceReserveKey> { | 715 | struct hash<SurfaceReserveKey> { |
| 714 | size_t operator()(const SurfaceReserveKey& k) const { | 716 | std::size_t operator()(const SurfaceReserveKey& k) const { |
| 715 | return k.Hash(); | 717 | return k.Hash(); |
| 716 | } | 718 | } |
| 717 | }; | 719 | }; |
| @@ -727,7 +729,7 @@ public: | |||
| 727 | return params.addr; | 729 | return params.addr; |
| 728 | } | 730 | } |
| 729 | 731 | ||
| 730 | size_t GetSizeInBytes() const { | 732 | std::size_t GetSizeInBytes() const { |
| 731 | return params.size_in_bytes; | 733 | return params.size_in_bytes; |
| 732 | } | 734 | } |
| 733 | 735 | ||
| @@ -775,7 +777,7 @@ public: | |||
| 775 | Surface GetDepthBufferSurface(bool preserve_contents); | 777 | Surface GetDepthBufferSurface(bool preserve_contents); |
| 776 | 778 | ||
| 777 | /// Get the color surface based on the framebuffer configuration and the specified render target | 779 | /// Get the color surface based on the framebuffer configuration and the specified render target |
| 778 | Surface GetColorBufferSurface(size_t index, bool preserve_contents); | 780 | Surface GetColorBufferSurface(std::size_t index, bool preserve_contents); |
| 779 | 781 | ||
| 780 | /// Flushes the surface to Switch memory | 782 | /// Flushes the surface to Switch memory |
| 781 | void FlushSurface(const Surface& surface); | 783 | void FlushSurface(const Surface& surface); |
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 61080f5cc..894fe6eae 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp | |||
| @@ -14,7 +14,7 @@ namespace OpenGL { | |||
| 14 | /// Gets the address for the specified shader stage program | 14 | /// Gets the address for the specified shader stage program |
| 15 | static VAddr GetShaderAddress(Maxwell::ShaderProgram program) { | 15 | static VAddr GetShaderAddress(Maxwell::ShaderProgram program) { |
| 16 | const auto& gpu = Core::System::GetInstance().GPU().Maxwell3D(); | 16 | const auto& gpu = Core::System::GetInstance().GPU().Maxwell3D(); |
| 17 | const auto& shader_config = gpu.regs.shader_config[static_cast<size_t>(program)]; | 17 | const auto& shader_config = gpu.regs.shader_config[static_cast<std::size_t>(program)]; |
| 18 | return *gpu.memory_manager.GpuToCpuAddress(gpu.regs.code_address.CodeAddress() + | 18 | return *gpu.memory_manager.GpuToCpuAddress(gpu.regs.code_address.CodeAddress() + |
| 19 | shader_config.offset); | 19 | shader_config.offset); |
| 20 | } | 20 | } |
| @@ -28,7 +28,7 @@ static GLShader::ProgramCode GetShaderCode(VAddr addr) { | |||
| 28 | 28 | ||
| 29 | /// Helper function to set shader uniform block bindings for a single shader stage | 29 | /// Helper function to set shader uniform block bindings for a single shader stage |
| 30 | static void SetShaderUniformBlockBinding(GLuint shader, const char* name, | 30 | static void SetShaderUniformBlockBinding(GLuint shader, const char* name, |
| 31 | Maxwell::ShaderStage binding, size_t expected_size) { | 31 | Maxwell::ShaderStage binding, std::size_t expected_size) { |
| 32 | const GLuint ub_index = glGetUniformBlockIndex(shader, name); | 32 | const GLuint ub_index = glGetUniformBlockIndex(shader, name); |
| 33 | if (ub_index == GL_INVALID_INDEX) { | 33 | if (ub_index == GL_INVALID_INDEX) { |
| 34 | return; | 34 | return; |
| @@ -36,7 +36,7 @@ static void SetShaderUniformBlockBinding(GLuint shader, const char* name, | |||
| 36 | 36 | ||
| 37 | GLint ub_size = 0; | 37 | GLint ub_size = 0; |
| 38 | glGetActiveUniformBlockiv(shader, ub_index, GL_UNIFORM_BLOCK_DATA_SIZE, &ub_size); | 38 | glGetActiveUniformBlockiv(shader, ub_index, GL_UNIFORM_BLOCK_DATA_SIZE, &ub_size); |
| 39 | ASSERT_MSG(static_cast<size_t>(ub_size) == expected_size, | 39 | ASSERT_MSG(static_cast<std::size_t>(ub_size) == expected_size, |
| 40 | "Uniform block size did not match! Got {}, expected {}", ub_size, expected_size); | 40 | "Uniform block size did not match! Got {}, expected {}", ub_size, expected_size); |
| 41 | glUniformBlockBinding(shader, ub_index, static_cast<GLuint>(binding)); | 41 | glUniformBlockBinding(shader, ub_index, static_cast<GLuint>(binding)); |
| 42 | } | 42 | } |
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h index 6e6febcbc..9bafe43a9 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.h +++ b/src/video_core/renderer_opengl/gl_shader_cache.h | |||
| @@ -28,7 +28,7 @@ public: | |||
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | /// Gets the size of the shader in guest memory, required for cache management | 30 | /// Gets the size of the shader in guest memory, required for cache management |
| 31 | size_t GetSizeInBytes() const { | 31 | std::size_t GetSizeInBytes() const { |
| 32 | return GLShader::MAX_PROGRAM_CODE_LENGTH * sizeof(u64); | 32 | return GLShader::MAX_PROGRAM_CODE_LENGTH * sizeof(u64); |
| 33 | } | 33 | } |
| 34 | 34 | ||
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 2d56370c7..d58a65935 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -189,7 +189,7 @@ public: | |||
| 189 | 189 | ||
| 190 | private: | 190 | private: |
| 191 | void AppendIndentation() { | 191 | void AppendIndentation() { |
| 192 | shader_source.append(static_cast<size_t>(scope) * 4, ' '); | 192 | shader_source.append(static_cast<std::size_t>(scope) * 4, ' '); |
| 193 | } | 193 | } |
| 194 | 194 | ||
| 195 | std::string shader_source; | 195 | std::string shader_source; |
| @@ -208,7 +208,7 @@ public: | |||
| 208 | UnsignedInteger, | 208 | UnsignedInteger, |
| 209 | }; | 209 | }; |
| 210 | 210 | ||
| 211 | GLSLRegister(size_t index, const std::string& suffix) : index{index}, suffix{suffix} {} | 211 | GLSLRegister(std::size_t index, const std::string& suffix) : index{index}, suffix{suffix} {} |
| 212 | 212 | ||
| 213 | /// Gets the GLSL type string for a register | 213 | /// Gets the GLSL type string for a register |
| 214 | static std::string GetTypeString() { | 214 | static std::string GetTypeString() { |
| @@ -226,12 +226,12 @@ public: | |||
| 226 | } | 226 | } |
| 227 | 227 | ||
| 228 | /// Returns the index of the register | 228 | /// Returns the index of the register |
| 229 | size_t GetIndex() const { | 229 | std::size_t GetIndex() const { |
| 230 | return index; | 230 | return index; |
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | private: | 233 | private: |
| 234 | const size_t index; | 234 | const std::size_t index; |
| 235 | const std::string& suffix; | 235 | const std::string& suffix; |
| 236 | }; | 236 | }; |
| 237 | 237 | ||
| @@ -468,7 +468,7 @@ public: | |||
| 468 | /// necessary. | 468 | /// necessary. |
| 469 | std::string AccessSampler(const Sampler& sampler, Tegra::Shader::TextureType type, | 469 | std::string AccessSampler(const Sampler& sampler, Tegra::Shader::TextureType type, |
| 470 | bool is_array) { | 470 | bool is_array) { |
| 471 | const size_t offset = static_cast<size_t>(sampler.index.Value()); | 471 | const std::size_t offset = static_cast<std::size_t>(sampler.index.Value()); |
| 472 | 472 | ||
| 473 | // If this sampler has already been used, return the existing mapping. | 473 | // If this sampler has already been used, return the existing mapping. |
| 474 | const auto itr = | 474 | const auto itr = |
| @@ -481,7 +481,7 @@ public: | |||
| 481 | } | 481 | } |
| 482 | 482 | ||
| 483 | // Otherwise create a new mapping for this sampler | 483 | // Otherwise create a new mapping for this sampler |
| 484 | const size_t next_index = used_samplers.size(); | 484 | const std::size_t next_index = used_samplers.size(); |
| 485 | const SamplerEntry entry{stage, offset, next_index, type, is_array}; | 485 | const SamplerEntry entry{stage, offset, next_index, type, is_array}; |
| 486 | used_samplers.emplace_back(entry); | 486 | used_samplers.emplace_back(entry); |
| 487 | return entry.GetName(); | 487 | return entry.GetName(); |
| @@ -531,7 +531,7 @@ private: | |||
| 531 | void BuildRegisterList() { | 531 | void BuildRegisterList() { |
| 532 | regs.reserve(Register::NumRegisters); | 532 | regs.reserve(Register::NumRegisters); |
| 533 | 533 | ||
| 534 | for (size_t index = 0; index < Register::NumRegisters; ++index) { | 534 | for (std::size_t index = 0; index < Register::NumRegisters; ++index) { |
| 535 | regs.emplace_back(index, suffix); | 535 | regs.emplace_back(index, suffix); |
| 536 | } | 536 | } |
| 537 | } | 537 | } |
| @@ -862,7 +862,7 @@ private: | |||
| 862 | */ | 862 | */ |
| 863 | bool IsSchedInstruction(u32 offset) const { | 863 | bool IsSchedInstruction(u32 offset) const { |
| 864 | // sched instructions appear once every 4 instructions. | 864 | // sched instructions appear once every 4 instructions. |
| 865 | static constexpr size_t SchedPeriod = 4; | 865 | static constexpr std::size_t SchedPeriod = 4; |
| 866 | u32 absolute_offset = offset - main_offset; | 866 | u32 absolute_offset = offset - main_offset; |
| 867 | 867 | ||
| 868 | return (absolute_offset % SchedPeriod) == 0; | 868 | return (absolute_offset % SchedPeriod) == 0; |
| @@ -930,7 +930,7 @@ private: | |||
| 930 | std::string result; | 930 | std::string result; |
| 931 | result += '('; | 931 | result += '('; |
| 932 | 932 | ||
| 933 | for (size_t i = 0; i < shift_amounts.size(); ++i) { | 933 | for (std::size_t i = 0; i < shift_amounts.size(); ++i) { |
| 934 | if (i) | 934 | if (i) |
| 935 | result += '|'; | 935 | result += '|'; |
| 936 | result += "(((" + imm_lut + " >> (((" + op_c + " >> " + shift_amounts[i] + | 936 | result += "(((" + imm_lut + " >> (((" + op_c + " >> " + shift_amounts[i] + |
| @@ -956,7 +956,7 @@ private: | |||
| 956 | 956 | ||
| 957 | ASSERT_MSG(instr.texs.nodep == 0, "TEXS nodep not implemented"); | 957 | ASSERT_MSG(instr.texs.nodep == 0, "TEXS nodep not implemented"); |
| 958 | 958 | ||
| 959 | size_t written_components = 0; | 959 | std::size_t written_components = 0; |
| 960 | for (u32 component = 0; component < 4; ++component) { | 960 | for (u32 component = 0; component < 4; ++component) { |
| 961 | if (!instr.texs.IsComponentEnabled(component)) { | 961 | if (!instr.texs.IsComponentEnabled(component)) { |
| 962 | continue; | 962 | continue; |
| @@ -1894,8 +1894,8 @@ private: | |||
| 1894 | UNREACHABLE(); | 1894 | UNREACHABLE(); |
| 1895 | } | 1895 | } |
| 1896 | } | 1896 | } |
| 1897 | size_t dest_elem{}; | 1897 | std::size_t dest_elem{}; |
| 1898 | for (size_t elem = 0; elem < 4; ++elem) { | 1898 | for (std::size_t elem = 0; elem < 4; ++elem) { |
| 1899 | if (!instr.tex.IsComponentEnabled(elem)) { | 1899 | if (!instr.tex.IsComponentEnabled(elem)) { |
| 1900 | // Skip disabled components | 1900 | // Skip disabled components |
| 1901 | continue; | 1901 | continue; |
| @@ -1999,8 +1999,8 @@ private: | |||
| 1999 | const std::string texture = "textureGather(" + sampler + ", coords, " + | 1999 | const std::string texture = "textureGather(" + sampler + ", coords, " + |
| 2000 | std::to_string(instr.tld4.component) + ')'; | 2000 | std::to_string(instr.tld4.component) + ')'; |
| 2001 | 2001 | ||
| 2002 | size_t dest_elem{}; | 2002 | std::size_t dest_elem{}; |
| 2003 | for (size_t elem = 0; elem < 4; ++elem) { | 2003 | for (std::size_t elem = 0; elem < 4; ++elem) { |
| 2004 | if (!instr.tex.IsComponentEnabled(elem)) { | 2004 | if (!instr.tex.IsComponentEnabled(elem)) { |
| 2005 | // Skip disabled components | 2005 | // Skip disabled components |
| 2006 | continue; | 2006 | continue; |
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.h b/src/video_core/renderer_opengl/gl_shader_gen.h index a43e2997b..d53b93ad5 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.h +++ b/src/video_core/renderer_opengl/gl_shader_gen.h | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | namespace OpenGL::GLShader { | 14 | namespace OpenGL::GLShader { |
| 15 | 15 | ||
| 16 | constexpr size_t MAX_PROGRAM_CODE_LENGTH{0x1000}; | 16 | constexpr std::size_t MAX_PROGRAM_CODE_LENGTH{0x1000}; |
| 17 | using ProgramCode = std::vector<u64>; | 17 | using ProgramCode = std::vector<u64>; |
| 18 | 18 | ||
| 19 | class ConstBufferEntry { | 19 | class ConstBufferEntry { |
| @@ -51,7 +51,7 @@ public: | |||
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | std::string GetName() const { | 53 | std::string GetName() const { |
| 54 | return BufferBaseNames[static_cast<size_t>(stage)] + std::to_string(index); | 54 | return BufferBaseNames[static_cast<std::size_t>(stage)] + std::to_string(index); |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | u32 GetHash() const { | 57 | u32 GetHash() const { |
| @@ -74,15 +74,15 @@ class SamplerEntry { | |||
| 74 | using Maxwell = Tegra::Engines::Maxwell3D::Regs; | 74 | using Maxwell = Tegra::Engines::Maxwell3D::Regs; |
| 75 | 75 | ||
| 76 | public: | 76 | public: |
| 77 | SamplerEntry(Maxwell::ShaderStage stage, size_t offset, size_t index, | 77 | SamplerEntry(Maxwell::ShaderStage stage, std::size_t offset, std::size_t index, |
| 78 | Tegra::Shader::TextureType type, bool is_array) | 78 | Tegra::Shader::TextureType type, bool is_array) |
| 79 | : offset(offset), stage(stage), sampler_index(index), type(type), is_array(is_array) {} | 79 | : offset(offset), stage(stage), sampler_index(index), type(type), is_array(is_array) {} |
| 80 | 80 | ||
| 81 | size_t GetOffset() const { | 81 | std::size_t GetOffset() const { |
| 82 | return offset; | 82 | return offset; |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | size_t GetIndex() const { | 85 | std::size_t GetIndex() const { |
| 86 | return sampler_index; | 86 | return sampler_index; |
| 87 | } | 87 | } |
| 88 | 88 | ||
| @@ -91,7 +91,7 @@ public: | |||
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | std::string GetName() const { | 93 | std::string GetName() const { |
| 94 | return std::string(TextureSamplerNames[static_cast<size_t>(stage)]) + '_' + | 94 | return std::string(TextureSamplerNames[static_cast<std::size_t>(stage)]) + '_' + |
| 95 | std::to_string(sampler_index); | 95 | std::to_string(sampler_index); |
| 96 | } | 96 | } |
| 97 | 97 | ||
| @@ -133,7 +133,7 @@ public: | |||
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | static std::string GetArrayName(Maxwell::ShaderStage stage) { | 135 | static std::string GetArrayName(Maxwell::ShaderStage stage) { |
| 136 | return TextureSamplerNames[static_cast<size_t>(stage)]; | 136 | return TextureSamplerNames[static_cast<std::size_t>(stage)]; |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | private: | 139 | private: |
| @@ -143,9 +143,9 @@ private: | |||
| 143 | 143 | ||
| 144 | /// Offset in TSC memory from which to read the sampler object, as specified by the sampling | 144 | /// Offset in TSC memory from which to read the sampler object, as specified by the sampling |
| 145 | /// instruction. | 145 | /// instruction. |
| 146 | size_t offset; | 146 | std::size_t offset; |
| 147 | Maxwell::ShaderStage stage; ///< Shader stage where this sampler was used. | 147 | Maxwell::ShaderStage stage; ///< Shader stage where this sampler was used. |
| 148 | size_t sampler_index; ///< Value used to index into the generated GLSL sampler array. | 148 | std::size_t sampler_index; ///< Value used to index into the generated GLSL sampler array. |
| 149 | Tegra::Shader::TextureType type; ///< The type used to sample this texture (Texture2D, etc) | 149 | Tegra::Shader::TextureType type; ///< The type used to sample this texture (Texture2D, etc) |
| 150 | bool is_array; ///< Whether the texture is being sampled as an array texture or not. | 150 | bool is_array; ///< Whether the texture is being sampled as an array texture or not. |
| 151 | }; | 151 | }; |
diff --git a/src/video_core/renderer_opengl/gl_shader_manager.h b/src/video_core/renderer_opengl/gl_shader_manager.h index 533e42caa..b86cd96e8 100644 --- a/src/video_core/renderer_opengl/gl_shader_manager.h +++ b/src/video_core/renderer_opengl/gl_shader_manager.h | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | namespace OpenGL::GLShader { | 12 | namespace OpenGL::GLShader { |
| 13 | 13 | ||
| 14 | /// Number of OpenGL texture samplers that can be used in the fragment shader | 14 | /// Number of OpenGL texture samplers that can be used in the fragment shader |
| 15 | static constexpr size_t NumTextureSamplers = 32; | 15 | static constexpr std::size_t NumTextureSamplers = 32; |
| 16 | 16 | ||
| 17 | using Tegra::Engines::Maxwell3D; | 17 | using Tegra::Engines::Maxwell3D; |
| 18 | 18 | ||
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp index 6f70deb96..af99132ba 100644 --- a/src/video_core/renderer_opengl/gl_state.cpp +++ b/src/video_core/renderer_opengl/gl_state.cpp | |||
| @@ -272,7 +272,7 @@ void OpenGLState::Apply() const { | |||
| 272 | } | 272 | } |
| 273 | 273 | ||
| 274 | // Clip distance | 274 | // Clip distance |
| 275 | for (size_t i = 0; i < clip_distance.size(); ++i) { | 275 | for (std::size_t i = 0; i < clip_distance.size(); ++i) { |
| 276 | if (clip_distance[i] != cur_state.clip_distance[i]) { | 276 | if (clip_distance[i] != cur_state.clip_distance[i]) { |
| 277 | if (clip_distance[i]) { | 277 | if (clip_distance[i]) { |
| 278 | glEnable(GL_CLIP_DISTANCE0 + static_cast<GLenum>(i)); | 278 | glEnable(GL_CLIP_DISTANCE0 + static_cast<GLenum>(i)); |
diff --git a/src/video_core/renderer_opengl/gl_stream_buffer.cpp b/src/video_core/renderer_opengl/gl_stream_buffer.cpp index aadf68f16..664f3ca20 100644 --- a/src/video_core/renderer_opengl/gl_stream_buffer.cpp +++ b/src/video_core/renderer_opengl/gl_stream_buffer.cpp | |||
| @@ -61,7 +61,7 @@ std::tuple<u8*, GLintptr, bool> OGLStreamBuffer::Map(GLsizeiptr size, GLintptr a | |||
| 61 | mapped_size = size; | 61 | mapped_size = size; |
| 62 | 62 | ||
| 63 | if (alignment > 0) { | 63 | if (alignment > 0) { |
| 64 | buffer_pos = Common::AlignUp<size_t>(buffer_pos, alignment); | 64 | buffer_pos = Common::AlignUp<std::size_t>(buffer_pos, alignment); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | bool invalidate = false; | 67 | bool invalidate = false; |
diff --git a/src/yuzu/configuration/configure_gamelist.cpp b/src/yuzu/configuration/configure_gamelist.cpp index 0be030434..8743ce982 100644 --- a/src/yuzu/configuration/configure_gamelist.cpp +++ b/src/yuzu/configuration/configure_gamelist.cpp | |||
| @@ -89,7 +89,7 @@ void ConfigureGameList::InitializeIconSizeComboBox() { | |||
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | void ConfigureGameList::InitializeRowComboBoxes() { | 91 | void ConfigureGameList::InitializeRowComboBoxes() { |
| 92 | for (size_t i = 0; i < row_text_names.size(); ++i) { | 92 | for (std::size_t i = 0; i < row_text_names.size(); ++i) { |
| 93 | ui->row_1_text_combobox->addItem(row_text_names[i], QVariant::fromValue(i)); | 93 | ui->row_1_text_combobox->addItem(row_text_names[i], QVariant::fromValue(i)); |
| 94 | ui->row_2_text_combobox->addItem(row_text_names[i], QVariant::fromValue(i)); | 94 | ui->row_2_text_combobox->addItem(row_text_names[i], QVariant::fromValue(i)); |
| 95 | } | 95 | } |
diff --git a/src/yuzu/debugger/graphics/graphics_breakpoints.cpp b/src/yuzu/debugger/graphics/graphics_breakpoints.cpp index fe682b3b8..b5c88f944 100644 --- a/src/yuzu/debugger/graphics/graphics_breakpoints.cpp +++ b/src/yuzu/debugger/graphics/graphics_breakpoints.cpp | |||
| @@ -42,7 +42,8 @@ QVariant BreakPointModel::data(const QModelIndex& index, int role) const { | |||
| 42 | tr("Finished primitive batch")}, | 42 | tr("Finished primitive batch")}, |
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | DEBUG_ASSERT(map.size() == static_cast<size_t>(Tegra::DebugContext::Event::NumEvents)); | 45 | DEBUG_ASSERT(map.size() == |
| 46 | static_cast<std::size_t>(Tegra::DebugContext::Event::NumEvents)); | ||
| 46 | return (map.find(event) != map.end()) ? map.at(event) : QString(); | 47 | return (map.find(event) != map.end()) ? map.at(event) : QString(); |
| 47 | } | 48 | } |
| 48 | 49 | ||
diff --git a/src/yuzu/debugger/graphics/graphics_surface.cpp b/src/yuzu/debugger/graphics/graphics_surface.cpp index 7e37962d5..cbcd5dd5f 100644 --- a/src/yuzu/debugger/graphics/graphics_surface.cpp +++ b/src/yuzu/debugger/graphics/graphics_surface.cpp | |||
| @@ -341,8 +341,8 @@ void GraphicsSurfaceWidget::OnUpdate() { | |||
| 341 | // directly... | 341 | // directly... |
| 342 | 342 | ||
| 343 | const auto& registers = gpu.Maxwell3D().regs; | 343 | const auto& registers = gpu.Maxwell3D().regs; |
| 344 | const auto& rt = registers.rt[static_cast<size_t>(surface_source) - | 344 | const auto& rt = registers.rt[static_cast<std::size_t>(surface_source) - |
| 345 | static_cast<size_t>(Source::RenderTarget0)]; | 345 | static_cast<std::size_t>(Source::RenderTarget0)]; |
| 346 | 346 | ||
| 347 | surface_address = rt.Address(); | 347 | surface_address = rt.Address(); |
| 348 | surface_width = rt.width; | 348 | surface_width = rt.width; |
diff --git a/src/yuzu/debugger/wait_tree.cpp b/src/yuzu/debugger/wait_tree.cpp index dc1023113..f2a7e23f0 100644 --- a/src/yuzu/debugger/wait_tree.cpp +++ b/src/yuzu/debugger/wait_tree.cpp | |||
| @@ -117,7 +117,7 @@ QString WaitTreeCallstack::GetText() const { | |||
| 117 | std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeCallstack::GetChildren() const { | 117 | std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeCallstack::GetChildren() const { |
| 118 | std::vector<std::unique_ptr<WaitTreeItem>> list; | 118 | std::vector<std::unique_ptr<WaitTreeItem>> list; |
| 119 | 119 | ||
| 120 | constexpr size_t BaseRegister = 29; | 120 | constexpr std::size_t BaseRegister = 29; |
| 121 | u64 base_pointer = thread.context.cpu_registers[BaseRegister]; | 121 | u64 base_pointer = thread.context.cpu_registers[BaseRegister]; |
| 122 | 122 | ||
| 123 | while (base_pointer != 0) { | 123 | while (base_pointer != 0) { |
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 22a317737..45bb1d1d1 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp | |||
| @@ -804,7 +804,7 @@ void GMainWindow::OnMenuInstallToNAND() { | |||
| 804 | tr("Cancel"), 0, progress_maximum, this); | 804 | tr("Cancel"), 0, progress_maximum, this); |
| 805 | progress.setWindowModality(Qt::WindowModal); | 805 | progress.setWindowModality(Qt::WindowModal); |
| 806 | 806 | ||
| 807 | for (size_t i = 0; i < src->GetSize(); i += buffer.size()) { | 807 | for (std::size_t i = 0; i < src->GetSize(); i += buffer.size()) { |
| 808 | if (progress.wasCanceled()) { | 808 | if (progress.wasCanceled()) { |
| 809 | dest->Resize(0); | 809 | dest->Resize(0); |
| 810 | return false; | 810 | return false; |