diff --git a/src/SharpEmu.Libs/Agc/AgcExports.cs b/src/SharpEmu.Libs/Agc/AgcExports.cs index 8dc7f67..fbd07ce 100644 --- a/src/SharpEmu.Libs/Agc/AgcExports.cs +++ b/src/SharpEmu.Libs/Agc/AgcExports.cs @@ -221,6 +221,7 @@ public static partial class AgcExports (ulong Es, ulong State, ulong AliasAlignment), IGuestCompiledShader> _depthOnlyVertexShaderCache = new(); private static readonly Dictionary _shaderHeadersByCode = new(); + private static readonly ConcurrentDictionary _arrayUploadUnsupported = new(); private static readonly bool _traceAgc = string.Equals( Environment.GetEnvironmentVariable("SHARPEMU_LOG_AGC"), "1", @@ -7984,7 +7985,8 @@ public static partial class AgcExports descriptor.Address != 0 && (descriptor.Type == Gen5TextureType2DArray || descriptor.Type == Gen5TextureType1DArray) && - descriptor.Depth > 1; + descriptor.Depth > 1 && + !_arrayUploadUnsupported.ContainsKey(descriptor.Address); var arrayUploadLayers = wantsArrayUpload ? descriptor.Depth : 1u; // Upload-known (not plain availability): the presenter's answer goes @@ -8213,6 +8215,8 @@ public static partial class AgcExports return true; } } + + _arrayUploadUnsupported.TryAdd(descriptor.Address, 0); } var source = new byte[(int)physicalSourceByteCount];