[RFC] SPV_MESA_fragment_coverage_mask SPIR-V extension proposal
Michał Król <[email protected]> Fri, 10 Apr 2026 14:47:28 +0200
| Newsgroups | gmane.comp.video.mesa3d.devel |
|---|---|
| Message-ID | <CAB+xuwjjfi-7c8oFWehw9tBxksidrqi-z=agmHtRkK=Jax_F0Q@mail.gmail.com> |
--000000000000cd2892064f1a894a Content-Type: text/plain; charset="UTF-8" Hi all, I'd like to propose a new Mesa vendor SPIR-V extension, SPV_MESA_fragment_coverage_mask (spec attached). Problem When a fragment shader runs in per-sample mode, the existing SampleMask built-in is masked to only the samples being processed by the current invocation. This means there is no way for the shader to obtain the full set of samples covered by the fragment. This is a problem for D3D translation layers: D3D10's input coverage mask always provides the complete coverage regardless of execution mode, and there is currently no SPIR-V equivalent. The problem is compounded when per-sample shading is triggered via a sample shading rate (e.g. minSampleShading) rather than through SampleId/SamplePosition, since in that case those built-ins are not present and SampleMask cannot be reverse-engineered into the full mask. Proposal The extension adds a single new built-in decoration, FragmentCoverageMaskMESA, which always contains the complete coverage mask of the fragment regardless of the shading mode. It introduces one new capability (FragmentCoverageMESA) and no new instructions. When PostDepthCoverage is declared, FragmentCoverageMaskMESA reflects the results of early fragment tests, consistent with SampleMask behaviour. Motivation This is primarily needed for accurate D3D10+ shader translation, where the input coverage mask semantic does not have a direct SPIR-V counterpart today. The full spec is attached. Feedback and comments welcome. --000000000000cd2892064f1a894a Content-Type: application/octet-stream; name="SPV_MESA_fragment_coverage_mask.asciidoc" Content-Disposition: attachment; filename="SPV_MESA_fragment_coverage_mask.asciidoc" Content-Transfer-Encoding: base64 Content-ID: <f_mnswhsii0> X-Attachment-Id: f_mnswhsii0 U1BWX01FU0FfZnJhZ21lbnRfY292ZXJhZ2VfbWFzaw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KDQpOYW1lIFN0cmluZ3MNCi0tLS0tLS0tLS0tLQ0KDQpTUFZfTUVTQV9mcmFnbWVu dF9jb3ZlcmFnZV9tYXNrDQoNCkNvbnRhY3QNCi0tLS0tLS0NCg0KVG8gcmVwb3J0IHByb2JsZW1z IHdpdGggdGhpcyBleHRlbnNpb24sIHBsZWFzZSBvcGVuIGEgbmV3IGlzc3VlIGF0Og0KDQpodHRw czovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1NQSVJWLVJlZ2lzdHJ5DQoNCkNvbnRyaWJ1dG9y cw0KLS0tLS0tLS0tLS0tDQoNCi0gTWljaGFsIEtyb2wsIEJyb2FkY29tDQotIEJyaWFuIFBhdWws IEJyb2FkY29tDQotIFJvbGFuZCBTY2hlaWRlZ2dlciwgQnJvYWRjb20NCg0KU3RhdHVzDQotLS0t LS0NCg0KUHJvcG9zZWQNCg0KVmVyc2lvbg0KLS0tLS0tLQ0KDQpbd2lkdGg9IjQwJSIsY29scz0i MjUsMjUiXQ0KfD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCnwgTGFz dCBNb2RpZmllZCBEYXRlIHwgMjAyNi0wNC0xMA0KfCBSZXZpc2lvbiAgICAgICAgICAgfCAzDQp8 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpEZXBlbmRlbmNpZXMN Ci0tLS0tLS0tLS0tLQ0KDQpUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIFNQ SVItViBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDEuNiBSZXZpc2lvbiA2Lg0KDQpUaGlzIGV4dGVu c2lvbiByZXF1aXJlcyBTUElSLVYgMS4wLg0KDQpPdmVydmlldw0KLS0tLS0tLS0NCg0KVGhpcyBl eHRlbnNpb24gaW50cm9kdWNlcyBhIG5ldyBidWlsdC1pbiBkZWNvcmF0aW9uLCAqRnJhZ21lbnRD b3ZlcmFnZU1hc2tNRVNBKiwgZm9yIGZyYWdtZW50IHNoYWRlcg0KaW5wdXRzLiBUaGlzIG5ldyBj YXBhYmlsaXR5IGFkZHJlc3NlcyBsaW1pdGF0aW9ucyBpbiBob3cgdGhlIGV4aXN0aW5nICpTYW1w bGVNYXNrKiBidWlsdC1pbiBiZWhhdmVzDQpkdXJpbmcgcGVyLXNhbXBsZSBmcmFnbWVudCBzaGFk ZXIgZXhlY3V0aW9uLCBwcm92aWRpbmcgYSBtb3JlIGRpcmVjdCBhbmQgY29uc2lzdGVudCBtZWNo YW5pc20NCmZvciBhY2Nlc3NpbmcgdGhlIGZ1bGwgY292ZXJhZ2UgbWFzayBvZiB0aGUgZnJhZ21l bnQgYWNyb3NzIGFsbCBzYW1wbGVzLg0KDQpUaGUgZXhpc3RpbmcgaW5wdXQgZGVjb3JhdGlvbiAq U2FtcGxlTWFzayogaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSB0aGUgc2V0IG9mIHNhbXBsZXMgdGhh dCBjb250cmlidXRlDQp0byBhIGZyYWdtZW50LiBIb3dldmVyLCB3aGVuIGEgZnJhZ21lbnQgc2hh ZGVyIGV4ZWN1dGVzIGluIGEgcGVyLXNhbXBsZSBzaGFkaW5nIG1vZGUgKGUuZy4gd2hlbg0KYSBm cmFnbWVudCBzaGFkZXIgaW5wdXQgaXMgZGVjb3JhdGVkIHdpdGggKlNhbXBsZUlkKiBvciAqU2Ft cGxlUG9zaXRpb24qKSwgdGhlICpTYW1wbGVNYXNrKiBidWlsdC1pbg0KaXMgbWFza2VkIHRvIG9u bHkgaW5jbHVkZSB0aGUgYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpYyBzYW1wbGUo cykgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZA0KYnkgdGhhdCBpbnZvY2F0aW9uLiBJbiB0aGUg Y2FzZSBvZiBmdWxsIHBlci1zYW1wbGUgc2hhZGluZyAob25lIGludm9jYXRpb24gcGVyIHNhbXBs ZSksIHRoaXMgcmVzdWx0cw0KaW4gb25seSBhIHNpbmdsZSBiaXQgYmVpbmcgc2V0LiBXaGVuIGEg c2FtcGxlIHNoYWRpbmcgcmF0ZSBpcyBzcGVjaWZpZWQgKGUuZy4gdmlhIFZ1bGthbidzDQoqbWlu U2FtcGxlU2hhZGluZyogcGFyYW1ldGVyKSwgYW4gaW52b2NhdGlvbiBtYXkgcHJvY2VzcyBhIHN1 YnNldCBvZiBzYW1wbGVzLCBhbmQgKlNhbXBsZU1hc2sqIHdpbGwNCmNvbnRhaW4gdGhlIGNvcnJl c3BvbmRpbmcgc3Vic2V0IG9mIGJpdHMuDQoNClRoaXMgY29uc3RyYWluZWQgYmVoYXZpb3VyIG1h a2VzIGl0IGltcG9zc2libGUgZm9yIHRoZSBzaGFkZXIgdG8gZGV0ZXJtaW5lIHRoZSBlbnRpcmUg c2V0IG9mIHNhbXBsZXMNCmNvdmVyZWQgYnkgdGhlIGZyYWdtZW50LiBTcGVjaWZpY2FsbHksIGl0 IGlzIGltcG9zc2libGUgdG8gZGlyZWN0bHkgbWFwIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGlucHV0 DQpjb3ZlcmFnZSBtYXNrIGluIEQzRDEwIEFQSSwgbWFraW5nIGl0IHZlcnkgZGlmZmljdWx0IHRv IHBvcnQgc29tZSBEM0QxMCBzaGFkZXJzIHRvIFNQSVItVi4gRnVydGhlcm1vcmUsDQp3aGVuIHBl ci1zYW1wbGUgc2hhZGluZyBpcyB0cmlnZ2VyZWQgYnkgYSBzYW1wbGUgc2hhZGluZyByYXRlIHJh dGhlciB0aGFuIGJ5IHRoZSB1c2Ugb2YgKlNhbXBsZUlkKg0Kb3IgKlNhbXBsZVBvc2l0aW9uKiwg dGhvc2UgYnVpbHQtaW4gdmFyaWFibGVzIGFyZSBub3QgYXZhaWxhYmxlLCBtYWtpbmcgaXQgaW1w b3NzaWJsZSB0byBkZXJpdmUgdGhlDQpmdWxsIGNvdmVyYWdlIG1hc2sgZnJvbSAqU2FtcGxlTWFz ayogYWxvbmUuDQoNClRoZSAqRnJhZ21lbnRDb3ZlcmFnZU1hc2tNRVNBKiBidWlsdC1pbiBkZWNv cmF0aW9uIHByb3ZpZGVzIGEgZnJhZ21lbnQgc2hhZGVyIGlucHV0IHRoYXQgaXMNCmd1YXJhbnRl ZWQgdG8gY29udGFpbiB0aGUgY29tcGxldGUgc2V0IG9mIHNhbXBsZXMgY292ZXJlZCBieSB0aGUg ZnJhZ21lbnQsIHJlZ2FyZGxlc3Mgb2YgdGhlDQpmcmFnbWVudCdzIGV4ZWN1dGlvbiBtb2RlLg0K DQpTcGVjaWZpY2FsbHksIHdoZW4gYSBmcmFnbWVudCBzaGFkZXIgaXMgZXhlY3V0aW5nIGluIHBl ci1zYW1wbGUgbW9kZToNCg0KLSBUaGUgZXhpc3RpbmcgKlNhbXBsZU1hc2sqIHdpbGwgY29udGFp biBvbmx5IHRoZSBiaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNhbXBsZShzKSBiZWluZw0KcHJv Y2Vzc2VkIGJ5IHRoZSBjdXJyZW50IGludm9jYXRpb24uDQoNCi0gVGhlIG5ldyAqRnJhZ21lbnRD b3ZlcmFnZU1hc2tNRVNBKiB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwgY292ZXJhZ2UgbWFzaywgZXF1 aXZhbGVudCB0byB0aGUgaW5wdXQNCmNvdmVyYWdlIG1hc2sgYXZhaWxhYmxlIGluIEFQSSBtb2Rl bHMgc3VjaCBhcyBEM0QxMCBhbmQgbGF0ZXIsIHdoZXJlIGFsbCBjb3ZlcmVkIHNhbXBsZXMgYXJl DQpyZXByZXNlbnRlZCBieSBzZXQgYml0cy4NCg0KTm90ZSB0aGF0IHdoZW4gKlNhbXBsZUlkKiBp cyBhdmFpbGFibGUsIGZyYWdtZW50IHNoYWRlcnMgdXNpbmcgKkZyYWdtZW50Q292ZXJhZ2VNYXNr TUVTQSogY2FuDQpyZWNvdmVyIHRoZSB2YWx1ZSBvZiAqU2FtcGxlTWFzayogZnJvbSAqRnJhZ21l bnRDb3ZlcmFnZU1hc2tNRVNBKiBieSBjb21wdXRpbmcgYSBiaXR3aXNlIEFORCB3aXRoDQphIGJp dCBzZXQgYXQgcG9zaXRpb24gKlNhbXBsZUlkKi4NCg0KVGhlIG5ldyBmdW5jdGlvbmFsaXR5IGlz IGVuYWJsZWQgdW5kZXIgdGhlICpGcmFnbWVudENvdmVyYWdlTUVTQSogY2FwYWJpbGl0eS4NCg0K RXh0ZW5zaW9uIE5hbWUNCi0tLS0tLS0tLS0tLS0tDQoNClRvIHVzZSB0aGlzIGV4dGVuc2lvbiB3 aXRoaW4gYSBTUElSLVYgbW9kdWxlLCB0aGUgZm9sbG93aW5nDQoqT3BFeHRlbnNpb24qIG11c3Qg YmUgcHJlc2VudCBpbiB0aGUgbW9kdWxlOg0KDQotLS0tDQpPcEV4dGVuc2lvbiAiU1BWX01FU0Ff ZnJhZ21lbnRfY292ZXJhZ2VfbWFzayINCi0tLS0NCg0KTmV3IENhcGFiaWxpdGllcw0KLS0tLS0t LS0tLS0tLS0tLQ0KDQpUaGlzIGV4dGVuc2lvbiBpbnRyb2R1Y2VzIGEgbmV3IGNhcGFiaWxpdHk6 DQoNCi0tLS0NCkZyYWdtZW50Q292ZXJhZ2VNRVNBDQotLS0tDQoNCg0KTmV3IEJ1aWx0aW5zDQot LS0tLS0tLS0tLS0NCg0KQnVpbHRpbiBJRHMgYWRkZWQ6DQoNCi0tLS0NCkZyYWdtZW50Q292ZXJh Z2VNYXNrTUVTQQ0KLS0tLQ0KDQpOZXcgSW5zdHJ1Y3Rpb25zDQotLS0tLS0tLS0tLS0tLS0tDQoN Ck5vbmUuDQoNCg0KVG9rZW4gTnVtYmVyIEFzc2lnbm1lbnRzDQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCg0KW3dpZHRoPSI0MCUiXQ0KW2NvbHM9IjcwJSwzMCUiXQ0KW2dyaWQ9InJvd3MiXQ0K fD09PT0NCnxGcmFnbWVudENvdmVyYWdlTWFza01FU0F8NDA5Ng0KfEZyYWdtZW50Q292ZXJhZ2VN RVNBfDQwOTcNCnw9PT09DQoNCk1vZGlmaWNhdGlvbnMgdG8gdGhlIFNQSVItViBTcGVjaWZpY2F0 aW9uLCBWZXJzaW9uIDEuNg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQoNCihNb2RpZnkgU2VjdGlvbiAzLjIuMjAsICpCdWlsdEluKiB0byBp bmNsdWRlIGEgbmV3IGJ1aWx0aW4pIDo6DQorDQotLQ0KW2NvbHM9IjEsMjAsOCIsb3B0aW9ucz0i aGVhZGVyIix3aWR0aD0iODAlIl0NCnw9PT09DQoyK14uXnwgQnVpbHRJbiBefCBFbmFibGluZyBD YXBhYmlsaXRpZXMNCnwgNDA5NiB8ICpGcmFnbWVudENvdmVyYWdlTWFza01FU0EqICsNCklucHV0 IHNhbXBsZSBtYXNrIHRoYXQgcHJvdmlkZXMgdGhlIGNvbXBsZXRlIHNldCBvZiBzYW1wbGVzIGNv dmVyZWQgYnkgdGhlIGZyYWdtZW50LA0KZXZlbiB3aGVuIHRoZSBmcmFnbWVudCBzaGFkZXIgZXhl Y3V0ZXMgaW4gYSBwZXItc2FtcGxlIHNoYWRpbmcgbW9kZS4NCnwgKkZyYWdtZW50Q292ZXJhZ2VN RVNBKg0KfD09PT0NCi0tDQoNCihNb2RpZnkgU2VjdGlvbiAzLjIuMzAsICpDYXBhYmlsaXR5Kiwg YWRkaW5nIGEgcm93IHRvIHRoZSBDYXBhYmlsaXR5IHRhYmxlKSA6Og0KKw0KLS0NCltjb2xzPSIx LDEwLDEwIixvcHRpb25zPSJoZWFkZXIiLHdpZHRoPSI4MCUiXQ0KfD09PT0NCjIrXi5efCBDYXBh YmlsaXR5IHwgSW1wbGljaXRseSBEZWNsYXJlcw0KfCA0MDk3IHwgKkZyYWdtZW50Q292ZXJhZ2VN RVNBKiB8ICAqU2hhZGVyKg0KfD09PT0NCg0KLS0NCg0KVmFsaWRhdGlvbiBSdWxlcw0KLS0tLS0t LS0tLS0tLS0tLQ0KDQpBbiAqT3BFeHRlbnNpb24qIG11c3QgYmUgYWRkZWQgdG8gdGhlIFNQSVIt ViBmb3IgdmFsaWRhdGlvbiBsYXllcnMgdG8gY2hlY2sNCmxlZ2FsIHVzZSBvZiB0aGlzIGV4dGVu c2lvbjoNCg0KLS0tLQ0KT3BFeHRlbnNpb24gIlNQVl9NRVNBX2ZyYWdtZW50X2NvdmVyYWdlX21h c2siDQotLS0tDQoNCklzc3Vlcw0KLS0tLS0tDQoNCi4gSW50ZXJhY3Rpb25zIHdpdGggS0hSX3Bv c3RfZGVwdGhfY292ZXJhZ2UuDQorDQotLQ0KKkRJU0NVU1NJT04qOiBIb3cgZG9lcyB0aGlzIGV4 dGVuc2lvbiBpbnRlcmFjdCB3aXRoIEtIUl9wb3N0X2RlcHRoX2NvdmVyYWdlPyBMb2dpY2FsbHkg aXQgc2VlbXMNCmxpa2Ugd2l0aG91dCBhbnkgZnVydGhlciBjbGFyaWZpY2F0aW9uIHRoaXMgc2hv dWxkIGZvbGxvdyB0aGUgbG9naWMgb2YgdGhlIG9yZGluYXJ5ICpTYW1wbGVNYXNrKi4NCg0KKlJF U09MVkVEKjogWWVzLCB3ZSB3YW50ICpGcmFnbWVudENvdmVyYWdlTWFza01FU0EqIHRvIGVmZmVj dGl2ZWx5IGNvbnRhaW4gdGhlIHVuaW9uIG9mIHRoZQ0KKlNhbXBsZU1hc2sqIHZhbHVlcyBhY3Jv c3MgYWxsIGNvbmN1cnJlbnQgcGVyLXNhbXBsZSBzaGFkZXIgaW52b2NhdGlvbnMuIEhlbmNlLCBp Zg0KKlBvc3REZXB0aENvdmVyYWdlKiBleGVjdXRpb24gbW9kZSBpcyBkZWNsYXJlZCwgKkZyYWdt ZW50Q292ZXJhZ2VNYXNrTUVTQSogd2lsbCBjb250YWluDQp0aGUgcmVzdWx0cyBvZiAqRWFybHlG cmFnbWVudFRlc3RzKi4NCi0tDQoNClJldmlzaW9uIEhpc3RvcnkNCi0tLS0tLS0tLS0tLS0tLS0N Cg0KW2NvbHM9IjUsMTUsMTUsNzAiXQ0KW2dyaWQ9InJvd3MiXQ0KW29wdGlvbnM9ImhlYWRlciJd DQp8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KfFJldnxEYXRlfEF1 dGhvcnxDaGFuZ2VzDQp8MXwyMDI1LTA5LTEyfE1pY2hhbCBLcm9sfCpJbml0aWFsIHJldmlzaW9u Kg0KfDJ8MjAyNS0wOS0yOXxNaWNoYWwgS3JvbHxSZW5hbWUgZXh0ZW5zaW9uIGFuZCBlbnVtZXJh bnRzLCBleHBhbmQgdGhlIE92ZXJ2aWV3IHNlY3Rpb24sIGRpc2N1c3MgaW50ZXJhY3Rpb24NCiB3 aXRoIEtIUl9wb3N0X2RlcHRoX2NvdmVyYWdlDQp8M3wyMDI2LTA0LTEwfE1pY2hhbCBLcm9sfENs YXJpZnkgU2FtcGxlTWFzayBiZWhhdmlvdXIgd2l0aCBwYXJ0aWFsIHNhbXBsZSBzaGFkaW5nIHJh dGVzDQp8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K --000000000000cd2892064f1a894a--