@@ -71,18 +71,21 @@ private static void BuildWeirdSettingsSection(DiscordEmbedBuilder builder, LogPa
71
71
&& buildVersion >= IntelThreadSchedulerBuildVersion )
72
72
notes . Add ( "ℹ️ Changing `Thread Scheduler` option may or may not increase performance" ) ;
73
73
}
74
+ var isAppleGpu = items [ "gpu_info" ] is string gpuInfoApple && gpuInfoApple . Contains ( "Apple" , StringComparison . OrdinalIgnoreCase ) ;
75
+ var canUseRelaxedZcull = items [ "renderer" ] is not "Vulkan" || multiItems [ "vk_ext" ] . Contains ( "VK_EXT_depth_range_unrestricted" ) ;
74
76
if ( items [ "llvm_arch" ] is string llvmArch )
75
77
notes . Add ( $ "❔ LLVM target CPU architecture override is set to `{ llvmArch . Sanitize ( replaceBackTicks : true ) } `") ;
76
-
77
- if ( items [ "renderer" ] == "D3D12" )
78
+ if ( items [ "renderer" ] is "D3D12" )
78
79
notes . Add ( "💢 Do **not** use DX12 renderer" ) ;
79
- if ( items [ "renderer" ] == "OpenGL"
80
- && items [ "supported_gpu" ] == EnabledMark
80
+ if ( items [ "renderer" ] is "OpenGL"
81
+ && items [ "supported_gpu" ] is EnabledMark
81
82
&& ! GowHDIds . Contains ( serial ) )
82
83
notes . Add ( "⚠️ `Vulkan` is the recommended `Renderer`" ) ;
83
- if ( items [ "renderer" ] == "Vulkan"
84
- && items [ "supported_gpu" ] == DisabledMark )
85
- notes . Add ( "❌ Selected `Vulkan` device is not supported, please use `OpenGL` instead" ) ;
84
+ if ( items [ "renderer" ] is "Vulkan" )
85
+ {
86
+ if ( items [ "supported_gpu" ] is DisabledMark )
87
+ notes . Add ( "❌ Selected `Vulkan` device is not supported, please use `OpenGL` instead" ) ;
88
+ }
86
89
var selectedRes = items [ "resolution" ] ;
87
90
var selectedRatio = items [ "aspect_ratio" ] ;
88
91
if ( ! string . IsNullOrEmpty ( selectedRes ) )
@@ -187,14 +190,16 @@ private static void BuildWeirdSettingsSection(DiscordEmbedBuilder builder, LogPa
187
190
&& buildVersion < RdnaMsaaFixedVersion
188
191
&& RadeonRx5xxPattern ( ) . IsMatch ( gpuInfo ) // RX 590 is a thing 😔
189
192
&& ! gpuInfo . Contains ( "RADV" ) ;
190
- if ( items [ "msaa" ] == "Disabled" )
193
+ if ( items [ "msaa" ] is "Disabled" )
191
194
{
192
- if ( ! isWireframeBugPossible )
195
+ if ( ! isWireframeBugPossible && ! isAppleGpu )
193
196
notes . Add ( "ℹ️ `Anti-aliasing` is disabled, which may result in visual artifacts" ) ;
194
197
}
195
- else if ( items [ "msaa" ] is not null and not "Disabled" )
198
+ else if ( items [ "msaa" ] is not null )
196
199
{
197
- if ( isWireframeBugPossible )
200
+ if ( isAppleGpu )
201
+ notes . Add ( "⚠️ `Anti-aliasing` is not supported for Apple GPUs, please disable" ) ;
202
+ else if ( isWireframeBugPossible )
198
203
notes . Add ( "⚠️ Please disable `Anti-aliasing` if you experience wireframe-like visual artifacts" ) ;
199
204
}
200
205
@@ -239,9 +244,16 @@ private static void BuildWeirdSettingsSection(DiscordEmbedBuilder builder, LogPa
239
244
}
240
245
if ( items [ "async_texture_streaming" ] == EnabledMark )
241
246
{
242
- if ( items [ "async_queue_scheduler" ] == "Device" )
243
- notes . Add ( "⚠️ If you experience visual artifacts, try setting `Async Queue Scheduler` to use `Host`" ) ;
244
- notes . Add ( "⚠️ If you experience visual artifacts, try disabling `Async Texture Streaming`" ) ;
247
+ if ( isAppleGpu )
248
+ {
249
+ notes . Add ( "⚠️ `Async Texture Streaming` is not supported on Apple GPUs" ) ;
250
+ }
251
+ else
252
+ {
253
+ if ( items [ "async_queue_scheduler" ] == "Device" )
254
+ notes . Add ( "⚠️ If you experience visual artifacts, try setting `Async Queue Scheduler` to use `Host`" ) ;
255
+ notes . Add ( "⚠️ If you experience visual artifacts, try disabling `Async Texture Streaming`" ) ;
256
+ }
245
257
}
246
258
247
259
if ( items [ "ppu_decoder" ] is string ppuDecoder )
@@ -324,14 +336,24 @@ private static void BuildWeirdSettingsSection(DiscordEmbedBuilder builder, LogPa
324
336
if ( items [ "cpu_blit" ] is EnabledMark
325
337
&& items [ "write_color_buffers" ] is DisabledMark )
326
338
notes . Add ( "❔ `Force CPU Blit` is enabled, but `Write Color Buffers` is disabled" ) ;
327
- if ( items [ "zcull" ] is EnabledMark )
339
+
340
+ if ( items [ "zcull_status" ] is not null and not "Full" && ! canUseRelaxedZcull )
341
+ notes . Add ( "⚠️ This GPU does not support `VK_EXT_depth_range_unrestricted` extension, please disable `Relaxed ZCull Sync`" ) ;
342
+ else if ( items [ "zcull_status" ] is "Disabled" )
328
343
notes . Add ( "⚠️ `ZCull Occlusion Queries` is disabled, which can result in visual artifacts" ) ;
329
344
else if ( items [ "relaxed_zcull" ] is string relaxedZcull )
330
345
{
331
- if ( relaxedZcull == EnabledMark && ! KnownGamesThatWorkWithRelaxedZcull . Contains ( serial ) )
346
+ if ( relaxedZcull is EnabledMark
347
+ && ! KnownGamesThatWorkWithRelaxedZcull . Contains ( serial ) )
348
+ {
332
349
notes . Add ( "ℹ️ `Relaxed ZCull Sync` is enabled and can cause performance and visual issues" ) ;
333
- else if ( relaxedZcull == DisabledMark && KnownGamesThatWorkWithRelaxedZcull . Contains ( serial ) )
350
+ }
351
+ else if ( relaxedZcull is DisabledMark
352
+ && KnownGamesThatWorkWithRelaxedZcull . Contains ( serial )
353
+ && canUseRelaxedZcull )
354
+ {
334
355
notes . Add ( "ℹ️ Enabling `Relaxed ZCull Sync` for this game may improve performance" ) ;
356
+ }
335
357
}
336
358
if ( ! KnownFpsUnlockPatchIds . Contains ( serial ) || ppuPatches . Count == 0 )
337
359
{
@@ -426,15 +448,19 @@ private static void BuildWeirdSettingsSection(DiscordEmbedBuilder builder, LogPa
426
448
notes . Add ( "⚠️ `GPU Texture Scaling` is enabled, please disable" ) ;
427
449
if ( items [ "af_override" ] is string af )
428
450
{
429
- if ( af == "Disabled" )
451
+ if ( isAppleGpu && af is "Auto" )
452
+ notes . Add ( "⚠️ `Anisotropic Filter` override is not supported on Apple GPUs, please use `Auto`" ) ;
453
+ else if ( af is "Disabled" )
430
454
notes . Add ( "❌ `Anisotropic Filter` is `Disabled`, please use `Auto` instead" ) ;
431
- else if ( af . ToLowerInvariant ( ) != "auto" && af != "16" )
455
+ else if ( af is not "auto" and not "16" )
432
456
notes . Add ( $ "❔ `Anisotropic Filter` is set to `{ af } x`, which makes little sense over `16x` or `Auto`") ;
433
457
}
434
458
435
- if ( items [ "shader_mode" ] == "Interpreter only" )
459
+ if ( items [ "shader_mode" ] ? . Contains ( "Interpreter" ) is true && isAppleGpu )
460
+ notes . Add ( "⚠️ Interpreter `Shader Mode` is not supported on Apple GPUs, please use Async-only option" ) ;
461
+ else if ( items [ "shader_mode" ] == "Interpreter only" )
436
462
notes . Add ( "⚠️ `Shader Interpreter Only` mode is not accurate and very demanding" ) ;
437
- else if ( items [ "shader_mode" ] ? . StartsWith ( "Async" ) is false )
463
+ else if ( items [ "shader_mode" ] ? . StartsWith ( "Async" ) is false && ! isAppleGpu )
438
464
notes . Add ( "❔ Async shader compilation is disabled" ) ;
439
465
if ( items [ "driver_recovery_timeout" ] is string driverRecoveryTimeout
440
466
&& int . TryParse ( driverRecoveryTimeout , out var drtValue )
@@ -465,7 +491,9 @@ private static void BuildWeirdSettingsSection(DiscordEmbedBuilder builder, LogPa
465
491
466
492
if ( items [ "mtrsx" ] is EnabledMark )
467
493
{
468
- if ( multiItems [ "fatal_error" ] . Any ( f => f . Contains ( "VK_ERROR_OUT_OF_POOL_MEMORY_KHR" ) ) )
494
+ if ( isAppleGpu )
495
+ notes . Add ( "⚠️ `Multithreaded RSX` is not supported for Apple GPUs" ) ;
496
+ else if ( multiItems [ "fatal_error" ] . Any ( f => f . Contains ( "VK_ERROR_OUT_OF_POOL_MEMORY_KHR" ) ) )
469
497
notes . Add ( "⚠️ `Multithreaded RSX` is enabled, please disable for this game" ) ;
470
498
else if ( threadCount < 6 )
471
499
notes . Add ( "⚠️ `Multithreaded RSX` is enabled on a CPU with few threads" ) ;
@@ -486,19 +514,21 @@ private static void BuildWeirdSettingsSection(DiscordEmbedBuilder builder, LogPa
486
514
{
487
515
if ( buildVersion is not null && buildVersion < CubebBuildVersion )
488
516
{
489
- if ( items [ "os_type" ] is "Windows" && ! audioBackend . Equals ( "XAudio2" , StringComparison . InvariantCultureIgnoreCase ) )
517
+ if ( items [ "os_type" ] is "Windows" && ! audioBackend . Equals ( "XAudio2" , StringComparison . OrdinalIgnoreCase ) )
490
518
notes . Add ( "⚠️ Please use `XAudio2` as the audio backend for this build" ) ;
491
519
else if ( items [ "os_type" ] == "Linux"
492
- && ! audioBackend . Equals ( "OpenAL" , StringComparison . InvariantCultureIgnoreCase )
493
- && ! audioBackend . Equals ( "FAudio" , StringComparison . InvariantCultureIgnoreCase ) )
520
+ && ! audioBackend . Equals ( "OpenAL" , StringComparison . OrdinalIgnoreCase )
521
+ && ! audioBackend . Equals ( "FAudio" , StringComparison . OrdinalIgnoreCase ) )
494
522
notes . Add ( "ℹ️ `FAudio` and `OpenAL` are the recommended audio backends for this build" ) ;
495
523
}
496
524
else
497
525
{
498
- if ( items [ "os_type" ] is "Windows" or "Linux" && ! audioBackend . Equals ( "Cubeb" , StringComparison . InvariantCultureIgnoreCase ) )
526
+ if ( items [ "os_type" ] is "Windows" or "Linux"
527
+ && ! audioBackend . Equals ( "Cubeb" , StringComparison . OrdinalIgnoreCase )
528
+ && ! audioBackend . Equals ( "XAudio2" , StringComparison . OrdinalIgnoreCase ) )
499
529
notes . Add ( "⚠️ Please use `Cubeb` as the audio backend" ) ;
500
530
}
501
- if ( audioBackend . Equals ( "null" , StringComparison . InvariantCultureIgnoreCase ) )
531
+ if ( audioBackend . Equals ( "null" , StringComparison . OrdinalIgnoreCase ) )
502
532
notes . Add ( "⚠️ `Audio backend` is set to `null`" ) ;
503
533
}
504
534
0 commit comments