mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	service/audren_u: Handle version 2 of performance frame info in GetWorkBufferSize()
Introduced in REV5. This is trivial to add support for, now that everything isn't a mess of random magic constant values. All this is, is a change in data type sizes as far as this function cares.
This commit is contained in:
		
							parent
							
								
									de93507a5a
								
							
						
					
					
						commit
						03746be097
					
				| @ -426,15 +426,19 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { | |||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     // Calculates the part of the size related to performance statistics.
 |     // Calculates the part of the size related to performance statistics.
 | ||||||
|     const auto calculate_performance_size = [](const AudioCore::AudioRendererParameter& params) { |     const auto calculate_perf_size = [this](const AudioCore::AudioRendererParameter& params) { | ||||||
|         // Extra size value appended to the end of the calculation.
 |         // Extra size value appended to the end of the calculation.
 | ||||||
|         constexpr u64 appended = 128; |         constexpr u64 appended = 128; | ||||||
| 
 | 
 | ||||||
|  |         // Whether or not we assume the newer version of performance metrics data structures.
 | ||||||
|  |         const bool is_v2 = | ||||||
|  |             IsFeatureSupported(AudioFeatures::PerformanceMetricsVersion2, params.revision); | ||||||
|  | 
 | ||||||
|         // Data structure sizes
 |         // Data structure sizes
 | ||||||
|         constexpr u64 perf_statistics_size = 0x0C; |         constexpr u64 perf_statistics_size = 0x0C; | ||||||
|         constexpr u64 header_size = 0x18; |         const u64 header_size = is_v2 ? 0x30 : 0x18; | ||||||
|         constexpr u64 entry_size = 0x10; |         const u64 entry_size = is_v2 ? 0x18 : 0x10; | ||||||
|         constexpr u64 detail_size = 0x10; |         const u64 detail_size = is_v2 ? 0x18 : 0x10; | ||||||
| 
 | 
 | ||||||
|         constexpr u64 max_detail_entries = 100; |         constexpr u64 max_detail_entries = 100; | ||||||
| 
 | 
 | ||||||
| @ -474,7 +478,7 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) { | |||||||
|     size += calculate_effect_info_size(params); |     size += calculate_effect_info_size(params); | ||||||
|     size += calculate_sink_info_size(params); |     size += calculate_sink_info_size(params); | ||||||
|     size += calculate_voice_state_size(params); |     size += calculate_voice_state_size(params); | ||||||
|     size += calculate_performance_size(params); |     size += calculate_perf_size(params); | ||||||
|     size += calculate_command_buffer_size(); |     size += calculate_command_buffer_size(); | ||||||
| 
 | 
 | ||||||
|     // finally, 4KB page align the size, and we're done.
 |     // finally, 4KB page align the size, and we're done.
 | ||||||
| @ -525,7 +529,9 @@ bool AudRenU::IsFeatureSupported(AudioFeatures feature, u32_le revision) const { | |||||||
|     u32_be version_num = (revision - Common::MakeMagic('R', 'E', 'V', '0')); // Byte swap
 |     u32_be version_num = (revision - Common::MakeMagic('R', 'E', 'V', '0')); // Byte swap
 | ||||||
|     switch (feature) { |     switch (feature) { | ||||||
|     case AudioFeatures::Splitter: |     case AudioFeatures::Splitter: | ||||||
|         return version_num >= 2u; |         return version_num >= 2U; | ||||||
|  |     case AudioFeatures::PerformanceMetricsVersion2: | ||||||
|  |         return version_num >= 5U; | ||||||
|     default: |     default: | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -28,6 +28,7 @@ private: | |||||||
| 
 | 
 | ||||||
|     enum class AudioFeatures : u32 { |     enum class AudioFeatures : u32 { | ||||||
|         Splitter, |         Splitter, | ||||||
|  |         PerformanceMetricsVersion2, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     bool IsFeatureSupported(AudioFeatures feature, u32_le revision) const; |     bool IsFeatureSupported(AudioFeatures feature, u32_le revision) const; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lioncash
						Lioncash