No, there is no stated guarantee (that I've ever seen). In fact, I've seen a good bit of the opposite behavior: data from previous (deallocated) textures and seemingly random data appearing.
However, the behavior between textures differs greatly depending on where the texture is allocated in the format. Allocating in system memory or with some of the shared pools could cause the data to be zeroed out, if the CPU so desires. Typically, when allocating in video memory, this does not occur. There may also be differences between IDirect3DDevice9::CreateTexture
and D3DXCreateTexture
; D3DX often does more initialization or provides options for such.
If you are seeing the texture appear zero-filled, that may be due to debug builds or a fresh system. Run some other graphics applications and then try running a release build (make sure your system is not set to D3D debug mode).