List of new extensions
Quick description of the new extensions
- Target-independent multisampling control and mixed samples (NV_framebuffer_mixed_samples + EXT_raster_multisample):
There are still some constraints; All color buffers must have the same number of samples, and the raster sample count must match the depth and stencil buffer sample count if depth or stencil test is enabled, and it must be higher or equal to the color buffer sample count.
A new “coverage reduction stage” is introduced in the per-fragment operations (after the fragment shader in early-z mode, after the depth-test in late-z), which converts a set of covered raster/depth/stencil samples to a set of covered color samples. There is an implementation-dependent association of raster samples to color samples. The reduced "color coverage" is computed such that the coverage bit for each color sample is 1 if any of the associated bits in the fragment's coverage is set, and 0 otherwise. This feature can be used in conjunction with the coverage to color feature (cf. below), in order to get the FS output coverage mask automatically transformed into a color by ROP. According to AnandTech, it seems that when rasterizing with explicit multisampling and no render-target, GM204 allows evaluating primitive coverage at 16x MSAA.
Note that EXT_raster_multisample is equivalent to "Target-Independent Rasterization" in Direct3D 11.1, which allows using multiple raster samples with a single color sample, as long as depth and stencil tests are disabled, and it is actually a subset of NV_framebuffer_mixed_samples which is more general and exposes more flexibility.
- Coverage to color conversion (NV_fragment_coverage_to_color):
- Post-depth coverage (EXT_post_depth_coverage):
- Multisample coverage override (NV_sample_mask_override_coverage)
- Programmable sample locations (NV_sample_locations):
- Conservative rasterization (NV_conservative_raster):
- Fragment Shader Interlock (NV_fragment_shader_interlock):
- Screen-space bounding-box rasterization (NV_fill_rectangle):
- Geometry Shader Passthrough (NV_geometry_shader_passthrough):
- Viewport Multicast (NV_viewport_array2):
- Enhanced sparse textures (EXT_sparse_texture2) :
- Texture Filter min/max (EXT_texture_filter_minmax):
- FP16 global atomics (NV_shader_atomic_fp16_vector) :