/// <summary> /// Create a new <see cref="BaseEffect"/>. /// </summary> public BaseEffect() { Type = TargetEffectType; UsageState = UsageState.Invalid; IsEnabled = false; BufferUnmapped = false; MixId = RendererConstants.UnusedMixId; ProcessingOrder = uint.MaxValue; WorkBuffers = new AddressInfo[2]; foreach (ref AddressInfo info in WorkBuffers.AsSpan()) { info = AddressInfo.Create(); } }
public void TestGetReference() { MemoryPoolState[] memoryPoolState = new MemoryPoolState[1]; memoryPoolState[0] = MemoryPoolState.Create(MemoryPoolState.LocationType.Cpu); memoryPoolState[0].SetCpuAddress(0x1000000, 0x10000); memoryPoolState[0].DspAddress = 0x4000000; AddressInfo addressInfo = AddressInfo.Create(0x1000000, 0x1000); addressInfo.ForceMappedDspAddress = 0x2000000; Assert.AreEqual(0x2000000, addressInfo.GetReference(true)); addressInfo.SetupMemoryPool(memoryPoolState.AsSpan()); Assert.AreEqual(0x4000000, addressInfo.GetReference(true)); }
public CircularBufferSink() { CircularBufferAddressInfo = AddressInfo.Create(); }
public void TestTryAttachBuffer() { const CpuAddress CpuAddress = 0x20000; const DspAddress DspAddress = CpuAddress; // TODO: DSP LLE const ulong CpuSize = 0x1000; const int MemoryPoolStateArraySize = 0x10; const CpuAddress CpuAddressRegionEnding = CpuAddress * MemoryPoolStateArraySize; MemoryPoolState[] memoryPoolStateArray = new MemoryPoolState[MemoryPoolStateArraySize]; for (int i = 0; i < memoryPoolStateArray.Length; i++) { memoryPoolStateArray[i] = MemoryPoolState.Create(MemoryPoolState.LocationType.Cpu); memoryPoolStateArray[i].SetCpuAddress(CpuAddress + (ulong)i * CpuSize, CpuSize); } ErrorInfo errorInfo; AddressInfo addressInfo = AddressInfo.Create(); PoolMapper poolMapper = new PoolMapper(DummyProcessHandle, true); Assert.IsTrue(poolMapper.TryAttachBuffer(out errorInfo, ref addressInfo, 0, 0)); Assert.AreEqual(ResultCode.InvalidAddressInfo, errorInfo.ErrorCode); Assert.AreEqual(0, errorInfo.ExtraErrorInfo); Assert.AreEqual(0, addressInfo.ForceMappedDspAddress); Assert.IsTrue(poolMapper.TryAttachBuffer(out errorInfo, ref addressInfo, CpuAddress, CpuSize)); Assert.AreEqual(ResultCode.InvalidAddressInfo, errorInfo.ErrorCode); Assert.AreEqual(CpuAddress, errorInfo.ExtraErrorInfo); Assert.AreEqual(DspAddress, addressInfo.ForceMappedDspAddress); poolMapper = new PoolMapper(DummyProcessHandle, false); Assert.IsFalse(poolMapper.TryAttachBuffer(out errorInfo, ref addressInfo, 0, 0)); addressInfo.ForceMappedDspAddress = 0; Assert.IsFalse(poolMapper.TryAttachBuffer(out errorInfo, ref addressInfo, CpuAddress, CpuSize)); Assert.AreEqual(ResultCode.InvalidAddressInfo, errorInfo.ErrorCode); Assert.AreEqual(CpuAddress, errorInfo.ExtraErrorInfo); Assert.AreEqual(0, addressInfo.ForceMappedDspAddress); poolMapper = new PoolMapper(DummyProcessHandle, memoryPoolStateArray.AsMemory(), false); Assert.IsFalse(poolMapper.TryAttachBuffer(out errorInfo, ref addressInfo, CpuAddressRegionEnding, CpuSize)); Assert.AreEqual(ResultCode.InvalidAddressInfo, errorInfo.ErrorCode); Assert.AreEqual(CpuAddressRegionEnding, errorInfo.ExtraErrorInfo); Assert.AreEqual(0, addressInfo.ForceMappedDspAddress); Assert.IsFalse(addressInfo.HasMemoryPoolState); Assert.IsTrue(poolMapper.TryAttachBuffer(out errorInfo, ref addressInfo, CpuAddress, CpuSize)); Assert.AreEqual(ResultCode.Success, errorInfo.ErrorCode); Assert.AreEqual(0, errorInfo.ExtraErrorInfo); Assert.AreEqual(0, addressInfo.ForceMappedDspAddress); Assert.IsTrue(addressInfo.HasMemoryPoolState); }