Repeat to create texture and release, it will lead to a memory leak.
my test environment:
- windows 8.1, directd3d 11
- hardware gtx970 and gtx770
- driver version 361.43
gtx770 with drvier 327.23 has no problem.
here’s my test code with c#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SharpDX;
using SharpDX.DXGI;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
namespace NvidiaMemLeakCSharp
{
class Program
{
static void Main(string[] args)
{
//using(var dev = new SharpDX.Direct3D11.Device(SharpDX.Direct3D.DriverType.Warp, DeviceCreationFlags.None, FeatureLevel.Level_11_0)) // OK
using(var dev = new SharpDX.Direct3D11.Device(SharpDX.Direct3D.DriverType.Hardware, DeviceCreationFlags.None, FeatureLevel.Level_11_0)) // E_OUTOFMEMORY
{
var desc = new Texture2DDescription{
Usage = ResourceUsage.Default,
Width = 512,
Height = 512,
Format = Format.R8G8B8A8_UNorm,
ArraySize = 1,
BindFlags = BindFlags.ShaderResource,
MipLevels = 1,
CpuAccessFlags = CpuAccessFlags.None,
OptionFlags = ResourceOptionFlags.None,
SampleDescription = new SampleDescription{ Count = 1, Quality = 0 },
};
for (var i = 0L; ;++i )
{
using (var tex = new Texture2D(dev, desc))
{
Console.WriteLine("iter: {0}", i);
}
}
}
}
}
}