private static void UpdateCachedBuffer( GpuChannel channel, bool isCompute, ref int cachedTextureBufferIndex, ref int cachedSamplerBufferIndex, ref ReadOnlySpan <int> cachedTextureBuffer, ref ReadOnlySpan <int> cachedSamplerBuffer, ref int cachedStageIndex, int textureBufferIndex, int samplerBufferIndex, int stageIndex) { bool stageChange = stageIndex != cachedStageIndex; if (stageChange || textureBufferIndex != cachedTextureBufferIndex) { ref BufferBounds bounds = ref channel.BufferManager.GetUniformBufferBounds(isCompute, stageIndex, textureBufferIndex); cachedTextureBuffer = MemoryMarshal.Cast <byte, int>(channel.MemoryManager.Physical.GetSpan(bounds.Address, (int)bounds.Size)); cachedTextureBufferIndex = textureBufferIndex; if (samplerBufferIndex == textureBufferIndex) { cachedSamplerBuffer = cachedTextureBuffer; cachedSamplerBufferIndex = samplerBufferIndex; } }
private void UpdateCachedBuffer( int stageIndex, ref int cachedTextureBufferIndex, ref int cachedSamplerBufferIndex, ref ReadOnlySpan <int> cachedTextureBuffer, ref ReadOnlySpan <int> cachedSamplerBuffer, int textureBufferIndex, int samplerBufferIndex) { if (textureBufferIndex != cachedTextureBufferIndex) { ref BufferBounds bounds = ref _channel.BufferManager.GetUniformBufferBounds(_isCompute, stageIndex, textureBufferIndex); cachedTextureBuffer = MemoryMarshal.Cast <byte, int>(_channel.MemoryManager.Physical.GetSpan(bounds.Address, (int)bounds.Size)); cachedTextureBufferIndex = textureBufferIndex; if (samplerBufferIndex == textureBufferIndex) { cachedSamplerBuffer = cachedTextureBuffer; cachedSamplerBufferIndex = samplerBufferIndex; } }