diff options
author | Samuel Pitoiset <[email protected]> | 2019-01-29 22:18:51 +0100 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2019-02-04 13:17:54 +0100 |
commit | a20c2e38d840c0e46a0eec590dd7b17b3e511664 (patch) | |
tree | 098ee9e2770d074437b511779302645a680849f2 /src/amd/vulkan/radv_pipeline.c | |
parent | a7c7d811f1916d6489467f0ed18ebd936fba26c6 (diff) |
radv: store the list of attachments for every subpass
This reworks how the depth stencil attachment is used for
simplicity. This also introduces radv_render_pass_compile()
helper that will be used for further optimizations.
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_pipeline.c')
-rw-r--r-- | src/amd/vulkan/radv_pipeline.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 138e153f9a4..c96f86bff63 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -966,11 +966,11 @@ radv_pipeline_out_of_order_rast(struct radv_pipeline *pipeline, }; if (pCreateInfo->pDepthStencilState && - subpass->depth_stencil_attachment.attachment != VK_ATTACHMENT_UNUSED) { + subpass->depth_stencil_attachment) { const VkPipelineDepthStencilStateCreateInfo *vkds = pCreateInfo->pDepthStencilState; struct radv_render_pass_attachment *attachment = - pass->attachments + subpass->depth_stencil_attachment.attachment; + pass->attachments + subpass->depth_stencil_attachment->attachment; bool has_stencil = vk_format_is_stencil(attachment->format); struct radv_dsa_order_invariance order_invariance[2]; struct radv_shader_variant *ps = @@ -1401,8 +1401,7 @@ radv_pipeline_init_dynamic_state(struct radv_pipeline *pipeline, * disabled or if the subpass of the render pass the pipeline is created * against does not use a depth/stencil attachment. */ - if (needed_states && - subpass->depth_stencil_attachment.attachment != VK_ATTACHMENT_UNUSED) { + if (needed_states && subpass->depth_stencil_attachment) { assert(pCreateInfo->pDepthStencilState); if (states & RADV_DYNAMIC_DEPTH_BOUNDS) { @@ -2506,8 +2505,8 @@ radv_compute_bin_size(struct radv_pipeline *pipeline, const VkGraphicsPipelineCr extent = color_entry->extent; - if (subpass->depth_stencil_attachment.attachment != VK_ATTACHMENT_UNUSED) { - struct radv_render_pass_attachment *attachment = pass->attachments + subpass->depth_stencil_attachment.attachment; + if (subpass->depth_stencil_attachment) { + struct radv_render_pass_attachment *attachment = pass->attachments + subpass->depth_stencil_attachment->attachment; /* Coefficients taken from AMDVLK */ unsigned depth_coeff = vk_format_is_depth(attachment->format) ? 5 : 0; @@ -2598,8 +2597,8 @@ radv_pipeline_generate_depth_stencil_state(struct radeon_cmdbuf *ctx_cs, uint32_t db_render_control = 0, db_render_override2 = 0; uint32_t db_render_override = 0; - if (subpass->depth_stencil_attachment.attachment != VK_ATTACHMENT_UNUSED) - attachment = pass->attachments + subpass->depth_stencil_attachment.attachment; + if (subpass->depth_stencil_attachment) + attachment = pass->attachments + subpass->depth_stencil_attachment->attachment; bool has_depth_attachment = attachment && vk_format_is_depth(attachment->format); bool has_stencil_attachment = attachment && vk_format_is_stencil(attachment->format); |