- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Whilst testing our own render abstraction, I discovered that CopyResource doesn't appear to work correctly when using BC1 textures.
My test case is a 32x32 BC1 compressed texture with 4 mip levels, and the last 2 mip levels always seem to end up black after the copy. Testing on HD 530. Equivalent code works fine on D3D9 & D3D12, so suspect it's D3D11 only.
If I change our exposed copy texture command to use CopySubResource for each mip level, rather than CopyResource, then there are no issues. All mip levels are correctly copied.
Thanks,
Neil
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It appears that I can't edit my original message, forgot some important information.
The broken case is default pool to default pool. CopyResource works fine when copying from a staging pool to default pool, or default pool to staging pool.
Also apologies, the equivalent D3D9 code does NOT work. We left the path for GPU->GPU compressed texture copies unimplemented as D3D9 can't do it. IIRC D3D9ex does support this, but D3D9 is effectively legacy only for us so we opted to just ignore support for this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
System Setup Information:
-----------------------------------------
System Used: Gigabyte Z170-HD3-CF
CPU SKU: i7-6700
GPU SKU: HD Graphics 530
Processor Line: Not sure what this is either.
System BIOS Version: F6
CMOS settings: Can check later if relevant
Graphics Driver Version: 20.19.15.4463
GOP/VBIOS Version: Can check later if relevant
Operating System: Windows
OS Version: Windows 10 64-bit
API: D3D11
Occurs on non-Intel GPUs?: No
Steps to Reproduce:
-------------------------------
1. Create default usage 2 Tex2Ds, 32x32, 4 mip levels, BC1_UNORM: A with initial texture data. B without initial texture data.
2. Create staging usage w/ CPU read Tex2D, 32x32, 4 mip levels, BC1_UNORM.
3. CopyResource texture A into texture B.
4. CopyResource texture C into texture C.
5. Map and compare texture C against initial data provided to A in each sub
Expected Results:
-------------------------------
All subresources of texture C match initial data provided to A.
Actual Results:
-------------------------------
Only subresources 0 and 1 match initial data, subresources 2 and 3 don't.
Additional Information:
Provided a small application which reproduces this on my Intel HD 530, does not reproduce on my NVIDIA or AMD GPUs, when ran on my Intel it will output the following:
Row 0 does not match within level 2
Row 1 does not match within level 2
Row 0 does not match within level 3
A built executable has been provided, bug-repro.exe.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Neil,
Thanks for filling in the template. I have talked to the driver team and filed a report. I will update you when I learn anything
-Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Neil,
We have found the problem and have a fix. I do not have an ETA when it will be in a released driver though.
-Michael

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page