diff --git a/src/gfxstream/codegen/scripts/cereal/marshaling.py b/src/gfxstream/codegen/scripts/cereal/marshaling.py index a140916ad0c..6b385a3b6f8 100644 --- a/src/gfxstream/codegen/scripts/cereal/marshaling.py +++ b/src/gfxstream/codegen/scripts/cereal/marshaling.py @@ -455,9 +455,8 @@ class VulkanMarshalingCodegen(VulkanTypeIterator): lenAccess = self.lenAccessor(vulkanType) if self.direction == "write": - if lenAccess is not None: - self.cgen.stmt("saveStringArray(%s, %s, %s)" % (self.streamVarName, - access, lenAccess)) + self.cgen.stmt("saveStringArray(%s, %s, %s)" % (self.streamVarName, + access, lenAccess if lenAccess is not None else "0")) else: castExpr = \ self.makeCastExpr( \ @@ -471,9 +470,7 @@ class VulkanMarshalingCodegen(VulkanTypeIterator): lenAccess = self.lenAccessor(vulkanType) if lenAccess is not None: finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType)) - else: - finalLenExpr = self.cgen.sizeofExpr(vulkanType) - self.genStreamCall(vulkanType, access, finalLenExpr) + self.genStreamCall(vulkanType, access, finalLenExpr) # Old version VkEncoder may have some sType values conflict with VkDecoder # of new versions. For host decoder, it should not carry the incorrect old diff --git a/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py b/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py index 9b675937ced..4c922d21d92 100644 --- a/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py +++ b/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py @@ -548,26 +548,24 @@ class VulkanReservedMarshalingCodegen(VulkanTypeIterator): lenAccessGuard = self.lenAccessorGuard(vulkanType) if self.direction == "write": + self.cgen.beginBlock() + + self.cgen.stmt("uint32_t c = 0") if lenAccess is not None: - self.cgen.beginBlock() - - self.cgen.stmt("uint32_t c = 0") - if lenAccessGuard is not None: - self.cgen.beginIf(lenAccessGuard) + self.cgen.beginIf(lenAccessGuard) self.cgen.stmt("c = %s" % (lenAccess)) - if lenAccessGuard is not None: - self.cgen.endIf() - self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&c", "sizeof(uint32_t)", toBe = True, actualSize = 4) - - self.cgen.beginFor("uint32_t i = 0", "i < c", "++i") - self.cgen.stmt("uint32_t l = %s ? strlen(%s[i]): 0" % (access, access)) - self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&l", "sizeof(uint32_t)", toBe = True, actualSize = 4) - self.cgen.beginIf("l") - self.genMemcpyAndIncr(self.ptrVar, "(char*)", "(%s[i])" % access, "l") self.cgen.endIf() - self.cgen.endFor() - self.cgen.endBlock() + self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&c", "sizeof(uint32_t)", toBe = True, actualSize = 4) + self.cgen.beginFor("uint32_t i = 0", "i < c", "++i") + self.cgen.stmt("uint32_t l = %s ? strlen(%s[i]): 0" % (access, access)) + self.genMemcpyAndIncr(self.ptrVar, "(uint32_t*)" ,"&l", "sizeof(uint32_t)", toBe = True, actualSize = 4) + self.cgen.beginIf("l") + self.genMemcpyAndIncr(self.ptrVar, "(char*)", "(%s[i])" % access, "l") + self.cgen.endIf() + self.cgen.endFor() + + self.cgen.endBlock() else: castExpr = \ self.makeCastExpr( \