summaryrefslogtreecommitdiff
path: root/serialize.c
diff options
context:
space:
mode:
Diffstat (limited to 'serialize.c')
-rw-r--r--serialize.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/serialize.c b/serialize.c
index 14a296f..f17f4aa 100644
--- a/serialize.c
+++ b/serialize.c
@@ -548,10 +548,14 @@ static void
serialize_viewport_state(const VkPipelineViewportStateCreateInfo *pInfo,
struct blob *metadata)
{
+ if (pInfo->sType != VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO) {
+ blob_write_uint32(metadata, VK_STRUCTURE_TYPE_MAX_ENUM);
+ return;
+ }
+
bool has_viewports = pInfo->pViewports ? true : false;
bool has_scissors = pInfo->pScissors ? true : false;
- assert(pInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO);
blob_write_uint32(metadata, pInfo->sType);
blob_write_uint32(metadata, pInfo->viewportCount);
@@ -578,6 +582,10 @@ deserialize_viewport_state(struct pipeline_info *pipeline,
VkPipelineViewportStateCreateInfo *pInfo = &pipeline->viewportState;
pInfo->sType = blob_read_uint32(metadata);
+ if (pInfo->sType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ return true;
+ }
+
assert(pInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO);
pInfo->viewportCount = blob_read_uint32(metadata);
@@ -645,9 +653,13 @@ static void
serialize_multisample_state(const VkPipelineMultisampleStateCreateInfo *pInfo,
struct blob *metadata)
{
+ if (pInfo->sType != VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO) {
+ blob_write_uint32(metadata, VK_STRUCTURE_TYPE_MAX_ENUM);
+ return;
+ }
+
bool has_sample_mask = pInfo->pSampleMask ? true : false;
- assert(pInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO);
blob_write_uint32(metadata, pInfo->sType);
blob_write_uint32(metadata, pInfo->rasterizationSamples);
@@ -673,6 +685,10 @@ deserialize_multisample_state(struct pipeline_info *pipeline,
VkPipelineMultisampleStateCreateInfo *pInfo = &pipeline->multisampleState;
pInfo->sType = blob_read_uint32(metadata);
+ if (pInfo->sType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ return true;
+ }
+
assert(pInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO);
pInfo->rasterizationSamples = blob_read_uint32(metadata);
@@ -697,7 +713,11 @@ static void
serialize_depth_stencil_state(const VkPipelineDepthStencilStateCreateInfo *pInfo,
struct blob *metadata)
{
- assert(pInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO);
+ if (pInfo->sType != VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO) {
+ blob_write_uint32(metadata, VK_STRUCTURE_TYPE_MAX_ENUM);
+ return;
+ }
+
blob_write_uint32(metadata, pInfo->sType);
blob_write_uint32(metadata, pInfo->depthTestEnable);
@@ -720,6 +740,10 @@ deserialize_depth_stencil_state(struct pipeline_info *pipeline,
VkPipelineDepthStencilStateCreateInfo *pInfo = &pipeline->depthStencilState;
pInfo->sType = blob_read_uint32(metadata);
+ if (pInfo->sType == VK_STRUCTURE_TYPE_MAX_ENUM) {
+ return true;
+ }
+
assert(pInfo->sType == VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO);
pInfo->depthTestEnable = blob_read_uint32(metadata);