From d2c725040f9f3058776d89e06c8179d892d4baa1 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sat, 10 Oct 2015 12:32:38 +0200 Subject: [PATCH] Handle viewports or scissors pointers being NULL --- renderdoc/driver/vulkan/vk_common.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index c5907a666..a19d054ee 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -2493,8 +2493,23 @@ void Serialiser::Serialise(const char *name, VkPipelineViewportStateCreateInfo & el.pViewports = NULL; el.pScissors = NULL; } - SerialisePODArray("viewports", (VkViewport *&)el.pViewports, el.viewportCount); - SerialisePODArray("scissors", (VkRect2D *&)el.pScissors, el.scissorCount); + + // need to handle these arrays potentially being NULL if they're dynamic + bool hasViews = (el.pViewports != NULL); + bool hasScissors = (el.pScissors != NULL); + + Serialise("hasViews", hasViews); + Serialise("hasScissors", hasScissors); + + if(hasViews) + SerialisePODArray("viewports", (VkViewport *&)el.pViewports, el.viewportCount); + else + Serialise("viewportCount", el.viewportCount); + + if(hasScissors) + SerialisePODArray("scissors", (VkRect2D *&)el.pScissors, el.scissorCount); + else + Serialise("scissorCount", el.scissorCount); } template<>