diff options
| -rw-r--r-- | src/video_core/textures/astc.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/video_core/textures/astc.cpp b/src/video_core/textures/astc.cpp index b508d64e9..eafb6b73a 100644 --- a/src/video_core/textures/astc.cpp +++ b/src/video_core/textures/astc.cpp | |||
| @@ -1616,6 +1616,7 @@ namespace Tegra::Texture::ASTC { | |||
| 1616 | std::vector<uint8_t> Decompress(const uint8_t* data, uint32_t width, uint32_t height, | 1616 | std::vector<uint8_t> Decompress(const uint8_t* data, uint32_t width, uint32_t height, |
| 1617 | uint32_t depth, uint32_t block_width, uint32_t block_height) { | 1617 | uint32_t depth, uint32_t block_width, uint32_t block_height) { |
| 1618 | uint32_t blockIdx = 0; | 1618 | uint32_t blockIdx = 0; |
| 1619 | std::size_t depth_offset = 0; | ||
| 1619 | std::vector<uint8_t> outData(height * width * depth * 4); | 1620 | std::vector<uint8_t> outData(height * width * depth * 4); |
| 1620 | for (uint32_t k = 0; k < depth; k++) { | 1621 | for (uint32_t k = 0; k < depth; k++) { |
| 1621 | for (uint32_t j = 0; j < height; j += block_height) { | 1622 | for (uint32_t j = 0; j < height; j += block_height) { |
| @@ -1630,7 +1631,7 @@ std::vector<uint8_t> Decompress(const uint8_t* data, uint32_t width, uint32_t he | |||
| 1630 | uint32_t decompWidth = std::min(block_width, width - i); | 1631 | uint32_t decompWidth = std::min(block_width, width - i); |
| 1631 | uint32_t decompHeight = std::min(block_height, height - j); | 1632 | uint32_t decompHeight = std::min(block_height, height - j); |
| 1632 | 1633 | ||
| 1633 | uint8_t* outRow = outData.data() + (j * width + i) * 4; | 1634 | uint8_t* outRow = depth_offset + outData.data() + (j * width + i) * 4; |
| 1634 | for (uint32_t jj = 0; jj < decompHeight; jj++) { | 1635 | for (uint32_t jj = 0; jj < decompHeight; jj++) { |
| 1635 | memcpy(outRow + jj * width * 4, uncompData + jj * block_width, decompWidth * 4); | 1636 | memcpy(outRow + jj * width * 4, uncompData + jj * block_width, decompWidth * 4); |
| 1636 | } | 1637 | } |
| @@ -1638,6 +1639,7 @@ std::vector<uint8_t> Decompress(const uint8_t* data, uint32_t width, uint32_t he | |||
| 1638 | blockIdx++; | 1639 | blockIdx++; |
| 1639 | } | 1640 | } |
| 1640 | } | 1641 | } |
| 1642 | depth_offset += height * width * 4; | ||
| 1641 | } | 1643 | } |
| 1642 | 1644 | ||
| 1643 | return outData; | 1645 | return outData; |