D3D12Texture::Lock computes the size of the staging buffer on Line 1541 of D3D12Texture.cpp. This size uses the RowPitch, which for BCn resources encapsulates the size in bytes of a single row of blocks. This RowPitch is then multiplied by the resource height and depth; however, the height is in pixels, not blocks, leading the size being overstated.
This change was added in e1060c2cdc066e7654afd38b476056bc3ae9445f, CL 29132367. This CL modifies the behavior from allocating a staging buffer sized to the entire resource size.
Locking of compressed formats now respect the actual number of rows
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-228545 in the post.
2 |
Component | UE - Rendering Architecture - RHI |
---|---|
Affects Versions | 5.4, 5.6, 5.5 |
Target Fix | 5.6 |
Fix Commit | 38438368 |
---|
Created | Oct 23, 2024 |
---|---|
Resolved | Nov 27, 2024 |
Updated | Jan 16, 2025 |