| // Copyright (c) 2019-2020 Qualcomm Technologies, Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_QCOM_render_pass_shader_resolve.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2019-11-07 |
| *IP Status*:: |
| No known IP claims. |
| *Interactions and External Dependencies*:: |
| None. |
| *Contributors*:: |
| - Srihari Babu Alla, Qualcomm |
| - Bill Licea-Kane, Qualcomm |
| - Jeff Leger, Qualcomm |
| |
| === Description |
| |
| This extension allows a shader resolve to replace fixed-function resolve. |
| |
| Fixed-function resolve is limited in function to simple filters of |
| multisample buffers to a single sample buffer. |
| |
| Fixed-function resolve is more performance efficient and/or power efficient |
| than shader resolve for such simple filters. |
| |
| Shader resolve allows a shader writer to create complex, non-linear |
| filtering of a multisample buffer in the last subpass of a subpass |
| dependency chain. |
| |
| This extension also provides a bit which can: be used to enlarge a sample |
| region dependency to a fragment region dependency, so that a |
| framebuffer-region dependency can: replace a framebuffer-global dependency |
| in some cases. |
| |
| include::{generated}/interfaces/VK_QCOM_render_pass_shader_resolve.txt[] |
| |
| === Issues |
| |
| 1) Should this extension be named render_pass_shader_resolve? |
| |
| *RESOLVED* Yes. |
| |
| This is part of suite of small extensions to render pass. |
| |
| Following the style guide, instead of following VK_KHR_create_renderpass2. |
| |
| 2) Should the VK_SAMPLE_COUNT_1_BIT be required for each pColorAttachment |
| and the DepthStencilAttachent? |
| |
| *RESOLVED* No. |
| |
| While this may not be a common use case, and while most fixed-function |
| resolve hardware has this limitation, there is little reason to require a |
| shader resolve to resolve to a single sample buffer. |
| |
| 3) Should a shader resolve subpass be the last subpass in a render pass? |
| |
| *RESOLVED* Yes. |
| |
| To be more specific, it should be the last subpass in a subpass dependency |
| chain. |
| |
| 4) Do we need the ename:VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM bit? |
| |
| *RESOLVED* Yes. |
| |
| This applies when an input attachment's sample count is equal to |
| pname:rasterizationSamples. |
| Further, if pname:sampleShading is enabled (explicitly or implicitly) then |
| pname:minSampleShading must: equal 0.0. |
| |
| However, this bit may be set on any subpass, it is not restricted to a |
| shader resolve subpass. |
| |
| === Version History |
| |
| * Revision 1, 2019-06-28 (wwlk) |
| - Initial draft |
| * Revision 2, 2019-11-06 (wwlk) |
| - General clean-up/spec updates |
| - Added issues |
| * Revision 3, 2019-11-07 (wwlk) |
| - Typos |
| - Additional issues |
| - Clarified that a shader resolve subpass is the last subpass in a |
| subpass dependency chain |
| * Revision 4, 2020-01-06 (wwlk) |
| - Change resolution of Issue 1 (_render_pass_, not _renderpass_) |