Skip to content

Commit

Permalink
safestruct: Fix null pRasterizationState
Browse files Browse the repository at this point in the history
  • Loading branch information
spencer-lunarg authored and charles-lunarg committed May 25, 2024
1 parent f6c5453 commit 8bc3389
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions src/vulkan/vk_safe_struct_manual.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -362,8 +362,9 @@ safe_VkGraphicsPipelineCreateInfo::safe_VkGraphicsPipelineCreateInfo(const VkGra
if (in_struct->pDynamicState->pDynamicStates[i] == VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT)
is_dynamic_has_rasterization = true;
}
// No pRasterizationState is same as dynamic, we assume rasterizerDiscardEnable is false
const bool has_rasterization = is_dynamic_has_rasterization ||
(in_struct->pRasterizationState && !in_struct->pRasterizationState->rasterizerDiscardEnable);
(!in_struct->pRasterizationState || !in_struct->pRasterizationState->rasterizerDiscardEnable);
if (in_struct->pViewportState && (has_rasterization || is_graphics_library)) {
bool is_dynamic_viewports = false;
bool is_dynamic_scissors = false;
Expand Down Expand Up @@ -474,8 +475,9 @@ safe_VkGraphicsPipelineCreateInfo::safe_VkGraphicsPipelineCreateInfo(const safe_
if (copy_src.pDynamicState->pDynamicStates[i] == VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT)
is_dynamic_has_rasterization = true;
}
// No pRasterizationState is same as dynamic, we assume rasterizerDiscardEnable is false
const bool has_rasterization =
is_dynamic_has_rasterization || (copy_src.pRasterizationState && !copy_src.pRasterizationState->rasterizerDiscardEnable);
is_dynamic_has_rasterization || (!copy_src.pRasterizationState || !copy_src.pRasterizationState->rasterizerDiscardEnable);
if (copy_src.pViewportState && (has_rasterization || is_graphics_library)) {
pViewportState = new safe_VkPipelineViewportStateCreateInfo(*copy_src.pViewportState);
} else
Expand Down Expand Up @@ -568,8 +570,9 @@ safe_VkGraphicsPipelineCreateInfo& safe_VkGraphicsPipelineCreateInfo::operator=(
if (copy_src.pDynamicState->pDynamicStates[i] == VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT)
is_dynamic_has_rasterization = true;
}
// No pRasterizationState is same as dynamic, we assume rasterizerDiscardEnable is false
const bool has_rasterization =
is_dynamic_has_rasterization || (copy_src.pRasterizationState && !copy_src.pRasterizationState->rasterizerDiscardEnable);
is_dynamic_has_rasterization || (!copy_src.pRasterizationState || !copy_src.pRasterizationState->rasterizerDiscardEnable);
if (copy_src.pViewportState && (has_rasterization || is_graphics_library)) {
pViewportState = new safe_VkPipelineViewportStateCreateInfo(*copy_src.pViewportState);
} else
Expand Down Expand Up @@ -680,8 +683,9 @@ void safe_VkGraphicsPipelineCreateInfo::initialize(const VkGraphicsPipelineCreat
if (in_struct->pDynamicState->pDynamicStates[i] == VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT)
is_dynamic_has_rasterization = true;
}
// No pRasterizationState is same as dynamic, we assume rasterizerDiscardEnable is false
const bool has_rasterization = is_dynamic_has_rasterization ||
(in_struct->pRasterizationState && !in_struct->pRasterizationState->rasterizerDiscardEnable);
(!in_struct->pRasterizationState || !in_struct->pRasterizationState->rasterizerDiscardEnable);
if (in_struct->pViewportState && (has_rasterization || is_graphics_library)) {
bool is_dynamic_viewports = false;
bool is_dynamic_scissors = false;
Expand Down Expand Up @@ -772,8 +776,9 @@ void safe_VkGraphicsPipelineCreateInfo::initialize(const safe_VkGraphicsPipeline
if (copy_src->pDynamicState->pDynamicStates[i] == VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT)
is_dynamic_has_rasterization = true;
}
// No pRasterizationState is same as dynamic, we assume rasterizerDiscardEnable is false
const bool has_rasterization =
is_dynamic_has_rasterization || (copy_src->pRasterizationState && !copy_src->pRasterizationState->rasterizerDiscardEnable);
is_dynamic_has_rasterization || (!copy_src->pRasterizationState || !copy_src->pRasterizationState->rasterizerDiscardEnable);
if (copy_src->pViewportState && (has_rasterization || is_graphics_library)) {
pViewportState = new safe_VkPipelineViewportStateCreateInfo(*copy_src->pViewportState);
} else
Expand Down

0 comments on commit 8bc3389

Please sign in to comment.