VK_ARM_pipeline_opacity_micromap
This document outlines functionality to allow applications to specify that a pipeline using Ray Query will not be used with acceleration structures which reference an opacity micromap array.
1. Problem Statement
The Opacity Micromap extension VK_EXT_opacity_micromap
supports the new pipeline
creation flag VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
, indicating
that the ray tracing pipeline may be used with acceleration structures referencing
micromaps. This allows for possible optimizations, knowing beforehand that opacity
micromaps may be used.
An equivalent flag does not exist for pipelines supporting Ray Query with opacity micromaps, such as graphics and compute. Consequently, it is currently not possible to optimize such pipelines for no-opacity, e.g. when opacity micromaps are supported by an application but not used by the pipeline. This may lead to performance degradation.
This extension adds a new flag, indicating that a pipeline will NOT be used with an acceleration structure referencing an opacity micromap.
2. Solution Space
The new flag VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM
disallows the
functionality (rather than allowing its opposite) in order to not contradict the current
specification, which allows a pipeline defined without a flag to support opacity micromap.
Backward compatibility is consequently preserved.
3. Proposal
3.1. API Features
Creation of a new flag VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM
, specifying
that the pipeline will not be used with acceleration structures which reference an opacity
micromap array.
static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM = 0x2000000000ULL;
VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM
specifies that the pipeline will not be
used with acceleration structures which reference an opacity micromap array.