Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
22005 Discussions

D3D11 CopyResource incorrectly copying BC1 textures

Customer__Intel1
Beginner
2,223 Views

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

0 Kudos
4 Replies
Customer__Intel1
Beginner
2,225 Views

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.

0 Kudos
Customer__Intel1
Beginner
2,225 Views

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.

 

 

0 Kudos
Michael_C_Intel2
Employee
2,225 Views

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 

0 Kudos
Michael_C_Intel2
Employee
2,225 Views

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 

0 Kudos
Reply