f2c4b6667b
Replace the stub no-op i915 bridge methods with real implementations: * i915_gem_set_tiling: validates tiling_mode (0..=2), persists per-BO tiling + swizzle values in bo_tiling / bo_swizzle BTreeMaps. * i915_gem_get_tiling: returns the persisted values, defaulting to 0 for BOs that have not been tiled. * i915_gem_set_domain: on write_domain == CPU, flushes the GGTT (gtt.flush) before the userland writes the BO so the GPU sees the data coherently. Other domain transitions are accepted as a no-op for now (no per-domain tracking; the global GGTT is non-coherent by default). * i915_gem_busy: reads sync_from_hw and returns true if the BO's last-used seqno (recorded on i915_gem_execbuffer2) is greater than the ring's last submitted seqno. * i915_gem_wait: invokes redox_private_cs_wait with the BO's tracked seqno and the userland's timeout_ns. Converts the i64 timeout to the wire-struct u64 with .max(0). * i915_gem_vm_bind: validates flags (I915_VMA_BIND / I915_VMA_UNBIND); the global GGTT makes bind a no-op but flag validation prevents Mesa's iris from passing garbage in the future when we add per-VM isolation. * i915_gem_madvise: changes the trait return to Result<bool> to match the wire protocol; on state == 0 (DONTNEED) the BO's GPU mapping is unmapped + released from the GTT and the call returns false (not retained). * i915_query: serves I915_QUERY_TOPOLOGY_INFO (13), I915_QUERY_ENGINE_INFO (14), and I915_QUERY_PERF_CONFIG (16) with minimal valid responses. * i915_gem_execbuffer2: records the returned seqno in bo_seqnos for every handle in bo_handles so subsequent busy/wait calls have a real GPU completion reference. * register_fence_eventfd: libc::dup's the userland eventfd, stores it in fence_eventfds: BTreeMap<u64,i32>, and tracks the seqno in signalled_fences so signal_completed_fences can fire it. * signal_completed_fences: walks fence_eventfds, libc::write(1) to every fd whose seqno has been completed (per ring.last_seqno() after sync_from_hw), then libc::close the fd. Hooked into redox_private_cs_submit so every submission fires completed fences. Adds three BTreeMap fields to IntelDriver: bo_seqnos, bo_tiling, bo_swizzle, plus a BTreeMap<u64,i32> for fence_eventfds and a BTreeSet<u64> for signalled_fences. All Mutex-protected.