From ede320fa9029b44b11ea5fcc970ec4eaab00d136 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 12 Aug 2021 09:26:40 +0200 Subject: [PATCH] v3dv: don't try to access pColorBlendState if rasterization is disabled Fixes: dEQP-VK.api.pipeline.pipeline_invalid_pointers_unused_structs.graphics Reviewed-by: Juan A. Suarez Part-of: --- src/broadcom/vulkan/v3dv_pipeline.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index aaf828ac426..5f05bd3867d 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -1140,7 +1140,8 @@ pipeline_populate_v3d_fs_key(struct v3d_fs_key *key, key->has_gs = has_geometry_shader; const VkPipelineColorBlendStateCreateInfo *cb_info = - pCreateInfo->pColorBlendState; + !pCreateInfo->pRasterizationState->rasterizerDiscardEnable ? + pCreateInfo->pColorBlendState : NULL; key->logicop_func = cb_info && cb_info->logicOpEnable == VK_TRUE ? vk_to_pipe_logicop[cb_info->logicOp] : @@ -1955,19 +1956,20 @@ pipeline_populate_graphics_key(struct v3dv_pipeline *pipeline, key->robust_buffer_access = pipeline->device->features.robustBufferAccess; + const bool raster_enabled = + !pCreateInfo->pRasterizationState->rasterizerDiscardEnable; + const VkPipelineInputAssemblyStateCreateInfo *ia_info = pCreateInfo->pInputAssemblyState; key->topology = vk_to_pipe_prim_type[ia_info->topology]; const VkPipelineColorBlendStateCreateInfo *cb_info = - pCreateInfo->pColorBlendState; + raster_enabled ? pCreateInfo->pColorBlendState : NULL; + key->logicop_func = cb_info && cb_info->logicOpEnable == VK_TRUE ? vk_to_pipe_logicop[cb_info->logicOp] : PIPE_LOGICOP_COPY; - const bool raster_enabled = - !pCreateInfo->pRasterizationState->rasterizerDiscardEnable; - /* Multisample rasterization state must be ignored if rasterization * is disabled. */