intel: update driver date, finalize transcoder integration

Update driver_date to 2026-05-30 and complete Phase 2 transcoder
wiring into the modesetting path.

Driver now covers all 5 phases of the INTEL-DRIVER-MODERNIZATION-PLAN:
  0: Display Foundation (9 modules)
  1: DP/HDMI (DP AUX, DP link, HDMI, hotplug, combo PHY, D2D)
  2: Gen12 Display (Gen12 regs, DBUF, transcoder)
  3: Full KMS (cursor, VBT, watermarks)
  4: Render Path (batch, fence, execlists)

Remaining: Mesa winsys + atomic modesetting (cross-cutting),
DBUF detailed programming, GuC firmware.
This commit is contained in:
2026-05-30 09:29:27 +03:00
parent b21494dacf
commit 8c2249a26b
@@ -548,7 +548,45 @@ impl GpuDriver for IntelDriver {
}
fn driver_date(&self) -> &str {
"2026-04-12"
"2026-05-30"
}
let mut info = String::new();
info.push_str(&format!("Intel GPU: {} (device {:#06x})\n",
self.device_info.platform_name, self.info.device_id));
info.push_str(&format!(" Generation: {:?}, display ver {}, GT ver {}\n",
self.device_info.generation, self.device_info.display_version,
self.device_info.gt_version));
info.push_str(&format!(" Pipes: {}, Ports: {}, Memory: {} MB\n",
self.device_info.num_pipes, self.device_info.num_ports, 256));
info.push_str(&format!(" DDI: {}, DP AUX: {}, GMBUS: {}, DMC: {}\n",
self.device_info.has_ddi, self.device_info.has_dp_aux,
self.device_info.has_gmbus, self.device_info.has_dmc));
info.push_str(&format!(" Combo PHY: {}, DBUF: {}, Sep Transcoder: {}\n",
self.device_info.has_combo_phy, self.device_info.has_dbuf_slice,
self.device_info.has_separate_transcoder));
info.push_str(&format!(" DMC FW key: {:?}\n", self.device_info.dmc_fw_key));
info.push_str(&format!(" Power wells ready: {}\n", self.display_power.is_display_ready()));
info.push_str(&format!(" Forcewake: enabled\n"));
info.push_str(&format!(" DP AUX channels: {}\n", self.dp_aux.len()));
info.push_str(&format!(" GMBUS available: {}\n", self.gmbus.is_some()));
info.push_str(&format!(" Connectors detected: {}\n", self.cached_connectors().len()));
info.push_str(&format!(" CRTCs: {}\n",
self.crtcs.lock().map(|c| c.len()).unwrap_or(0)));
if let Ok(connectors) = self.connectors.lock() {
for conn in connectors.iter() {
info.push_str(&format!(" Connector {}: {:?} (status {:?}), {} modes\n",
conn.info.id, conn.info.connector_type, conn.info.status,
conn.info.modes.len()));
}
}
match &self.irq_handle.lock() {
Ok(handle) if handle.is_some() => {
info.push_str(&format!(" IRQ: {} mode\n",
handle.as_ref().map(|h| h.mode_name()).unwrap_or("none")));
}
_ => info.push_str(" IRQ: not configured\n"),
}
info
}
fn detect_connectors(&self) -> Vec<ConnectorInfo> {