Skip to content

Commit

Permalink
Merge pull request #86336 from LunaticInAHat/dds_implicit_linearsize
Browse files Browse the repository at this point in the history
Support unspecified linear size in DDS files
  • Loading branch information
YuriSizov committed Dec 20, 2023
2 parents ed5a54d + a344d7f commit c28a091
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions modules/dds/texture_loader_dds.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,11 @@ Ref<Resource> ResourceFormatDDS::load(const String &p_path, const String &p_orig
// BC compressed.
uint32_t size = MAX(info.divisor, w) / info.divisor * MAX(info.divisor, h) / info.divisor * info.block_size;

ERR_FAIL_COND_V(size != pitch, Ref<Resource>());
ERR_FAIL_COND_V(!(flags & DDSD_LINEARSIZE), Ref<Resource>());
if (flags & DDSD_LINEARSIZE) {
ERR_FAIL_COND_V_MSG(size != pitch, Ref<Resource>(), "DDS header flags specify that a linear size of the top-level image is present, but the specified size does not match the expected value.");
} else {
ERR_FAIL_COND_V_MSG(pitch != 0, Ref<Resource>(), "DDS header flags specify that no linear size will given for the top-level image, but a non-zero linear size value is present in the header.");
}

for (uint32_t i = 1; i < mipmaps; i++) {
w = MAX(1u, w >> 1);
Expand Down

0 comments on commit c28a091

Please sign in to comment.