{-# language CPP #-} -- | = Name -- -- VK_QCOM_render_pass_shader_resolve - device extension -- -- == VK_QCOM_render_pass_shader_resolve -- -- [__Name String__] -- @VK_QCOM_render_pass_shader_resolve@ -- -- [__Extension Type__] -- Device extension -- -- [__Registered Extension Number__] -- 172 -- -- [__Revision__] -- 4 -- -- [__Extension and Version Dependencies__] -- -- - Requires Vulkan 1.0 -- -- [__Contact__] -- -- - Bill Licea-Kane -- <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QCOM_render_pass_shader_resolve:%20&body=@wwlk%20 > -- -- == 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. -- -- == New Enum Constants -- -- - 'QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME' -- -- - 'QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION' -- -- - Extending -- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits': -- -- - 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM' -- -- - 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM' -- -- == 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 -- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM' -- bit? -- -- __RESOLVED__ Yes. -- -- This applies when an input attachment’s sample count is equal to -- @rasterizationSamples@. Further, if @sampleShading@ is enabled -- (explicitly or implicitly) then @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/) -- -- = See Also -- -- No cross-references are available -- -- = Document Notes -- -- For more information, see the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve Vulkan Specification> -- -- This page is a generated document. Fixes and changes should be made to -- the generator scripts, not directly. module Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve ( QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION , pattern QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION , QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME , pattern QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME ) where import Data.String (IsString) type QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 -- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION" pattern QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION :: forall a . Integral a => a pattern $bQCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION :: a $mQCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 type QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" -- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME" pattern QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a pattern $bQCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME :: a $mQCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME :: forall r a. (Eq a, IsString a) => a -> (Void# -> r) -> (Void# -> r) -> r QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve"