Skip to content

d3d12: ARB_framebuffer_no_attachments

Pretty simple feature to enable, only some minor mismatches with how sizes / sample counts are specified between D3D and GL. This will have some unspecified interaction with ARB_sample_shading when I get to it, but each one on their own works just fine.

The CI results that I'll be baselining into this change include 2 WARP bugs:

  1. When doing draws that have no render targets (color attachments), depth stencil, or pixel shader UAVs (SSBOs/images), WARP says that there's no side effects and attempts to optimize and drop the rasterization. It should include occlusion queries as a visible side effect.
  2. D3D only supports doing MSAA rendering without RTVs/DSVs via a feature called TIR, target-independent rasterization, enabled through a ForcedSampleCount rasterizer property. This feature does two things: enabling single-sampled rasterization targeting MSAA targets, or multi-sampled rasterization with single-sampled targets or no targets. In either case, the D3D spec says that occlusion queries should count the rasterized samples, while both WARP and the NVIDIA DX12 driver appear to count output samples.

I've got fixes for these WARP bugs staged for a future Windows version, but alas, CI will still show failures until it gets those fixes somehow.

Merge request reports