From ab1b69ebe39a1872d3e940673798df07d5a7bfa8 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Wed, 31 Mar 2021 21:36:04 -0700 Subject: [PATCH] fix ktx issue --- libraries/gpu/src/gpu/Texture_ktx.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 9f9955c5a8..c4b674a917 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -40,7 +40,7 @@ struct GPUKTXPayload { Sampler::Desc _samplerDesc; Texture::Usage _usage; TextureUsageType _usageType; - glm::ivec2 _originalSize; + glm::ivec2 _originalSize { 0, 0 }; Byte* serialize(Byte* data) const { *(Version*)data = CURRENT_VERSION; @@ -65,15 +65,14 @@ struct GPUKTXPayload { } bool unserialize(const Byte* data, size_t size) { - if (size != SIZE) { - return false; - } - Version version = *(const Version*)data; - if (version != CURRENT_VERSION) { + data += sizeof(Version); + + if (version > CURRENT_VERSION) { + // If we try to load a version that we don't know how to parse, + // it will render incorrectly return false; } - data += sizeof(Version); memcpy(&_samplerDesc, data, sizeof(Sampler::Desc)); data += sizeof(Sampler::Desc); @@ -88,8 +87,11 @@ struct GPUKTXPayload { memcpy(&_usageType, data, sizeof(TextureUsageType)); data += sizeof(TextureUsageType); - memcpy(&_originalSize, data, sizeof(glm::ivec2)); - data += sizeof(glm::ivec2); + if (version >= 2) { + memcpy(&_originalSize, data, sizeof(glm::ivec2)); + data += sizeof(glm::ivec2); + } + return true; }