fix(windows-drivers): emit OPM struct tags + D3DCOLORVALUE + shim UINT
apple / swift (push) Failing after 1s
apple / screenshots (push) Has been skipped
windows-drivers / probe-and-proto (push) Successful in 19s
windows-drivers / driver-build (push) Failing after 57s
windows-host / package (push) Successful in 5m14s
android / android (push) Failing after 58s
ci / web (push) Successful in 1m28s
ci / rust (push) Successful in 1m55s
ci / docs-site (push) Successful in 53s
deb / build-publish (push) Successful in 3m19s
decky / build-publish (push) Successful in 12s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 6s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 5s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 4s
ci / bench (push) Successful in 4m41s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 4s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 2m17s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 8m31s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 8m22s
docker / deploy-docs (push) Successful in 17s

DXGI resolved. Remaining iddcx type gaps: OPM typedefs need their _OPM_* struct
tags too (recursively(false) drops them), D3DCOLORVALUE (an OPM field), and UINT
(unsigned int — absent from crate::types, and allowlist_type does not emit bare
primitive aliases). Broaden to _?OPM_.* + _?D3DCOLORVALUE and raw_line the UINT
alias.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-24 14:40:25 +00:00
parent 04e52b0c22
commit f34e956818
+8 -2
View File
@@ -375,8 +375,14 @@ fn generate_iddcx(out_path: &Path, config: &Config) -> Result<(), ConfigError> {
// missing), so this stays type-identical for the WDF surface.
.allowlist_type("DXGI_.*")
.allowlist_type("IDXGI.*")
.allowlist_type("OPM_.*")
.allowlist_type("UINT")
// OPM types are `typedef struct _OPM_X {..} OPM_X` — allowlist BOTH the tag and the typedef
// (allowlist_recursively(false) won't pull the tag in from the typedef). Plus D3DCOLORVALUE,
// referenced by an OPM struct.
.allowlist_type("_?OPM_.*")
.allowlist_type("_?D3DCOLORVALUE")
// `UINT` is `unsigned int`; wdk-sys never references it so it's absent from crate::types and
// allowlist_type won't emit a bare primitive alias. Shim it (unambiguous on Windows).
.raw_line("pub type UINT = ::core::ffi::c_uint;")
};
trace!(bindgen_builder = ?bindgen_builder);