// 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 renderpass?

*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_)
