From 215fed731808eb872083db2a61dbfb58c8149ea2 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 8 Dec 2016 18:34:24 -0800 Subject: [PATCH] anv/pipeline: Make a copy of VkPipelineDepthStencilStateCreateinfo Reviewed-by: Lionel Landwerlin Reviewed-by: Nanley Chery --- src/intel/vulkan/genX_pipeline.c | 34 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index d0dbe13f393..97d7150f08f 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -651,7 +651,7 @@ static const uint32_t vk_to_gen_stencil_op[] = { static void emit_ds_state(struct anv_pipeline *pipeline, - const VkPipelineDepthStencilStateCreateInfo *info, + const VkPipelineDepthStencilStateCreateInfo *pCreateInfo, const struct anv_render_pass *pass, const struct anv_subpass *subpass) { @@ -663,7 +663,7 @@ emit_ds_state(struct anv_pipeline *pipeline, # define depth_stencil_dw pipeline->gen9.wm_depth_stencil #endif - if (info == NULL) { + if (pCreateInfo == NULL) { /* We're going to OR this together with the dynamic state. We need * to make sure it's initialized to something useful. */ @@ -674,29 +674,31 @@ emit_ds_state(struct anv_pipeline *pipeline, return; } + VkPipelineDepthStencilStateCreateInfo info = *pCreateInfo; + /* VkBool32 depthBoundsTestEnable; // optional (depth_bounds_test) */ - pipeline->writes_stencil = info->stencilTestEnable; + pipeline->writes_stencil = info.stencilTestEnable; #if GEN_GEN <= 7 struct GENX(DEPTH_STENCIL_STATE) depth_stencil = { #else struct GENX(3DSTATE_WM_DEPTH_STENCIL) depth_stencil = { #endif - .DepthTestEnable = info->depthTestEnable, - .DepthBufferWriteEnable = info->depthWriteEnable, - .DepthTestFunction = vk_to_gen_compare_op[info->depthCompareOp], + .DepthTestEnable = info.depthTestEnable, + .DepthBufferWriteEnable = info.depthWriteEnable, + .DepthTestFunction = vk_to_gen_compare_op[info.depthCompareOp], .DoubleSidedStencilEnable = true, - .StencilTestEnable = info->stencilTestEnable, - .StencilFailOp = vk_to_gen_stencil_op[info->front.failOp], - .StencilPassDepthPassOp = vk_to_gen_stencil_op[info->front.passOp], - .StencilPassDepthFailOp = vk_to_gen_stencil_op[info->front.depthFailOp], - .StencilTestFunction = vk_to_gen_compare_op[info->front.compareOp], - .BackfaceStencilFailOp = vk_to_gen_stencil_op[info->back.failOp], - .BackfaceStencilPassDepthPassOp = vk_to_gen_stencil_op[info->back.passOp], - .BackfaceStencilPassDepthFailOp =vk_to_gen_stencil_op[info->back.depthFailOp], - .BackfaceStencilTestFunction = vk_to_gen_compare_op[info->back.compareOp], + .StencilTestEnable = info.stencilTestEnable, + .StencilFailOp = vk_to_gen_stencil_op[info.front.failOp], + .StencilPassDepthPassOp = vk_to_gen_stencil_op[info.front.passOp], + .StencilPassDepthFailOp = vk_to_gen_stencil_op[info.front.depthFailOp], + .StencilTestFunction = vk_to_gen_compare_op[info.front.compareOp], + .BackfaceStencilFailOp = vk_to_gen_stencil_op[info.back.failOp], + .BackfaceStencilPassDepthPassOp = vk_to_gen_stencil_op[info.back.passOp], + .BackfaceStencilPassDepthFailOp =vk_to_gen_stencil_op[info.back.depthFailOp], + .BackfaceStencilTestFunction = vk_to_gen_compare_op[info.back.compareOp], }; VkImageAspectFlags aspects = 0; @@ -725,7 +727,7 @@ emit_ds_state(struct anv_pipeline *pipeline, * "If Depth_Test_Enable = 1 AND Depth_Test_func = EQUAL, the * Depth_Write_Enable must be set to 0." */ - if (info->depthTestEnable && info->depthCompareOp == VK_COMPARE_OP_EQUAL) + if (info.depthTestEnable && info.depthCompareOp == VK_COMPARE_OP_EQUAL) depth_stencil.DepthBufferWriteEnable = false; pipeline->writes_depth = depth_stencil.DepthBufferWriteEnable; -- 2.30.2