From a3f888d0897742c7bf0240507a8510dd6f8de133 Mon Sep 17 00:00:00 2001 From: Gurchetan Singh Date: Mon, 15 Jul 2024 09:47:41 -0700 Subject: [PATCH] gfxstream: host: don't abort when unbox fails Unboxing fails if a NULL handle is passed in, triggering an abort. However for vkCmdBeginTransformFeedbackEXT, this is perfectly valid: "For each element of pCounterBuffers that is VK_NULL_HANDLE, transform feedback will start capturing vertex data to byte zero in the corresponding bound transform feedback buffer." Reviewed-by: Aaron Ruby Acked-by: Yonggang Luo Acked-by: Adam Jackson Part-of: --- src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py b/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py index 3b54a4133a3..9a75198fb9e 100644 --- a/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py +++ b/src/gfxstream/codegen/scripts/cereal/reservedmarshaling.py @@ -223,7 +223,7 @@ class VulkanReservedMarshalingCodegen(VulkanTypeIterator): self.cgen.beginIf(lenAccessGuard) self.cgen.beginFor("uint32_t k = 0", "k < %s" % lenAccess, "++k") self.cgen.stmt("uint64_t tmpval; memcpy(&tmpval, %s_ptr + k * 8, sizeof(uint64_t))" % handle64Var) - self.cgen.stmt("*((%s%s) + k) = (%s)%s((%s)tmpval)" % ( + self.cgen.stmt("*((%s%s) + k) = tmpval ? (%s)%s((%s)tmpval) : VK_NULL_HANDLE" % ( self.makeCastExpr(vulkanType.getForNonConstAccess()), access, vulkanType.typeName, mapFunc, vulkanType.typeName)) if lenAccessGuard is not None: