[DX10] D3DX10LoadTextureFromTexture broken on ATI, any good alternative?

Started by
1 comment, last by Zipster 16 years, 3 months ago
We're experiencing problems with the D3DX10LoadTextureFromTexture function on ATI hardware (specifically the HD 2600XT and HD 2900XT). If you try to load into a texture that's a different size than the source, or use a destination box that is smaller than the source, weird stride-like artifacts appear. The only thing that works is a straight copy, with no down-sampling or cropping (which defeats the purpose of this function). What we're trying to do is take advantage of rich saved games on Vista by copying the back-buffer into a 256x256 texture. This function appeared to be the easiest approach and works on nVidia, but we need to use something different until it's fixed on ATI. The other method that would work is to render the back-buffer texture into a smaller render target, however this isn't as nice a single function call. I'm not as familiar with DX10 as I am with DX9, so does anyone know of any combination of similar texture functions that would achieve the same effect? If all else fails I might have to fall back on the rendering :(
Advertisement
Out of curiousity, does this work on the RefRast? With D3D10's more rigid specifications this sounds more like a bug on ATI's part. Unless the strange stide artifacts are due to a bad parameter that Nvidia's drivers silently correct for you..?

I'm not aware of any other simple alternatives - manual downsampling either on the GPU or CPU is probably your only option.

hth
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

Unfortunately, the reference rasterizer was a bit too slow to be practical for our graphics engine. I sat around 30 minutes just trying to get through initialization before I gave up.

I tried using GDI+ to scale the image, but that was a complete wash. It only supports ARGB/XRGBA (not RGBA/RGBX which is what I needed), and either GDI+ or DX10 or both completely ignores negative height in bitmap headers, indicating a vertical flip. So I ended up with a correctly sized image that had the wrong colors and was vertically inverted.

In the end, I settled on the rendering technique. Not too happy with that, but it works across the board and I can take this off my buglist :)

This topic is closed to new replies.

Advertisement