Meta tags:
Headings (most frequently used words):
the, what, is, and, on, this, graphics, why, kernel, about, conclusion, driver, don, where, problem, it, do, in, are, hid, next, for, of, use, linux, an, to, drivers, huion, note, my, does, shader, so, with, firmware, support, issues, gpus, now, stack, have, not, implementation, all, perf, upstream, new, that, gpu, making, you, else, uclogic, udev, bpf, how, ownership, si, recipe, which, from, dc, tablet, own, big, power, take, first, data, memory, go, display, hardware, footnotes, stylus, plumbing, introduction, calendar, mainline, blob, keeping, results, back, one, buffer, two, swap, was, runtime, raspberry, pi, wait, mode, userspace, care, long, winded, rants, work, boot, color, pipeline, api, video, brief, we, compilation, can, any, function, performance, bug, development, affected, amd, live, demo, kworkflow, addendum, arch, based, distro, only, systems, patches, there, 2025, dce6, but, attempt, setting, expectations, confronting, reality, handing, over, controls, devices, challenges, summary, opentabletdriver, extension, journey, turnip, surprise, lavapipe, landed, day, overwhelming, incredibly, hot, better, solution, real, post, break, time, apitrace, state, glretrace, streaming, codegen, action, equal, horrors, locking, hold, did, funky, throwing, heuristics, at, getting, somewhere, upstreaming, questions, ei, interface, multiple, styli, pipes, xwayland, xtest, case, technical, definitions, distribution, model, works, until, impacts, contacting, downstream, burden, itself, mint, gnome, trademark, free, software, tone, irrelevant, background, others, single, triangle, transform, scissor, essential, scoped, design, takeaway, tool, pkgctl, examples, try, flow, cpu, boundary, texture, shadow, trap, thought, story, ended, step, out, shared, resources, byte, orders, comes, removing, mistake, management, idle, enabled, clock, clocks, obey, introducing, pm, v3d, references, opening, file, hard, way, libglnx, chase, aside, standard, libraries, talking, sucks, like, libinput, switcher, precious, product, ids, reverse, engineering, required, into, get, moar, more, faq, licensing, plagiarism, machine, cost, ai, scraping, maintainability, environmental, economical, brain, active, filesystem, disk, partition, tables, gpt, mbr, chrp, allocator, wall, boots, menu, secure, initial, untested, ieee1275, rs, crate, readiness, compositor, deviation, protocols, unstable, foundations, theory, plane, kwin, nv12, p010, scanout, banding, 3dluts, hdr, scaling, seeing, believing, umr, dcn, tab, llms, steps, approach, up, following, along, rt, just, compile, hit, intersection, separately, been, last, years, calls, considerations, ue5, lumen, improvement, bonus, content, call, bonanza, code, complexity, opinionated, transfer, annotations, scoping, fibers, exploration, working, old, features, vce1, encoding, final, thoughts, open, source, organization, fix, might, be, good, laptop, second, third, ringing, steam, deck, already, mix, match, useful, links, priority, adoption, apps, past, visual, behavioral, changes, while, retaining, brand, potential, license, violation, another, or, instructions, apply, me, some, other, reason, kde, systemd, history, eviction, policies, right, decision, impossible, enter, cgroups, user, space, configuration, igpus, apu, benefit, too, merged, junior, bubble, hadris, thing, called, unreal, engine, avowed, gets, stuck, infinite, loop, silent, hill, reflections, sample, sky, started, summer, afternoon, focus, analog, connector, going, shopping, fixing, displayport, hdmi, audio, poweeeeer, who, amdgpu, left, learned, acknowledgements, cards, exactly, supported, parts, need, aren, mesa, project, compatibility, layers, translation, side, window, your, games, run, well, compiler, downloaded, didn, download, kw, report, isn, scary, maintainers, friendly, latency, xdc, gallium, vulkan, nir, cooking, problems,
Text of the page (most frequently used words):
the (3724), and (1467), that (904), for (835), this (717), with (545), you (457), are (348), have (341), not (319), can (307), but (303), was (293), kernel (291), all (279), from (274), which (239), some (204), #driver (201), work (196), memory (196), also (191), use (190), there (190), has (185), more (182), one (181), what (180), just (180), post (177), out (173), they (170), will (170), when (168), gpu (168), now (163), would (157), into (157), about (149), code (143), like (143), how (136), time (132), other (132), #support (128), because (124), any (124), vram (121), get (117), new (114), them (113), then (113), these (112), your (109), linux (109), been (107), only (103), different (103), shader (102), need (98), even (98), don (97), where (94), here (93), thing (93), most (92), first (91), well (88), 2026 (88), should (88), systemd (87), had (87), using (84), hardware (84), than (84), very (83), things (83), make (82), device (82), their (81), gnome (80), those (77), same (77), being (76), application (76), gpus (73), already (72), drivers (72), way (71), system (70), actually (69), shaders (69), over (69), still (69), much (68), lot (68), flatpak (68), issue (67), vulkan (67), end (67), stack (67), something (66), were (66), next (65), bit (65), source (65), might (65), open (64), instead (64), hit (64), does (64), function (63), user (62), after (62), used (62), data (61), while (61), case (61), working (61), really (60), problem (60), good (60), its (60), our (59), want (59), firmware (59), since (58), means (58), see (57), issues (57), file (56), doesn (56), few (56), without (56), path (56), every (56), graphics (55), upstream (55), run (55), claude (55), point (54), back (54), 2025 (53), however (53), performance (53), again (53), set (53), amdgpu (53), devices (53), mesa (53), api (52), could (52), compositor (51), right (51), before (51), going (51), cpu (50), tool (50), once (50), list (50), power (50), another (49), color (49), many (49), game (49), version (49), two (49), may (49), release (48), call (48), long (48), events (48), needs (48), runtime (48), fix (47), patch (47), default (47), features (47), single (47), let (47), display (47), around (47), everything (46), running (46), testing (46), command (46), buffer (45), access (45), process (45), own (45), client (44), users (44), too (44), mode (44), started (44), each (44), management (43), patches (43), part (43), take (43), such (43), doing (42), implementation (42), specific (42), years (42), both (42), libei (42), added (41), made (41), calls (41), via (41), called (41), app (41), why (41), debian (40), people (40), try (40), isn (40), software (40), old (40), tablet (40), org (39), enough (39), applications (39), blog (39), always (39), test (39), image (39), bug (39), calendar (39), quite (39), key (38), apps (38), hid (38), possible (37), know (37), based (37), done (37), start (37), got (37), uses (37), gets (37), until (37), less (37), clock (37), main (36), descriptor (36), example (36), between (36), format (36), never (36), hard (36), pipeline (36), read (35), wayland (35), developers (35), down (35), space (35), per (35), works (35), look (34), better (34), object (34), ray (34), amd (34), drm (34), big (34), place (34), userspace (34), video (34), fixed (33), texture (33), shared (33), cases (33), change (33), approach (33), projects (33), free (32), did (32), able (32), development (32), available (32), though (32), order (32), allocations (32), evicted (32), usually (31), create (31), needed (31), makes (31), wrong (31), think (31), likely (31), mint (31), cgroup (31), project (30), worked (30), updates (30), non (30), functionality (30), target (30), tools (30), series (30), wasn (30), either (30), completely (30), protocol (29), side (29), update (29), year (29), git (29), find (29), etc (29), through (29), least (29), context (29), versions (29), games (29), bgra (29), under (28), allows (28), having (28), sure (28), didn (28), keep (28), table (28), request (28), output (27), add (27), address (27), last (27), real (27), send (27), implement (27), com (27), simple (27), foo (27), extension (27), swap (27), moving (26), changes (26), boot (26), tree (26), problems (26), off (26), input (26), making (26), pretty (25), custom (25), idea (25), who (25), write (25), files (25), help (25), reason (25), maybe (25), probably (25), desktop (25), engine (25), little (25), patent (25), dispatch (25), idle (25), easy (24), low (24), supported (24), machine (24), number (24), mostly (24), v3d (24), rather (24), getting (24), fixes (24), line (24), review (24), radeon (24), ram (24), loop (24), value (24), planet (23), merged (23), trying (23), future (23), state (23), solution (23), interface (23), found (23), ever (23), yet (23), enabled (23), level (23), posts (23), installation (23), compiler (23), registers (23), red (23), correct (23), pass (23), libinput (23), model (22), multiple (22), thread (22), library (22), directly (22), obvious (22), currently (22), small (22), say (22), released (22), talk (22), top (22), itself (22), physical (22), above (22), becomes (22), commands (22), cache (22), package (22), mastodon (22), simply (22), course (22), turns (22), anything (22), exactly (22), control (22), buttons (22), often (22), properly (22), ownership (22), null (22), allocation (22), bunch (21), apply (21), nice (21), report (21), else (21), fine (21), improvements (21), best (21), check (21), nothing (21), systems (21), https (21), page (21), sometimes (21), g_autoptr (21), directory (21), kwin (21), stylus (21), eis (21), great (20), decided (20), usage (20), return (20), radv (20), kworkflow (20), install (20), name (20), provides (20), layer (20), inside (20), apis (20), register (20), important (20), note (20), true (20), actual (20), far (20), resources (20), caller (20), size (20), result (20), content (19), objects (19), required (19), compositors (19), feel (19), build (19), separate (19), opengl (19), during (19), ago (19), wanted (19), environment (19), supports (19), show (19), moved (19), previous (19), second (19), changed (19), branch (19), pre (19), usb (19), recently (19), won (19), happens (19), common (19), submission (19), january (19), cik (19), eventually (19), thought (19), bytes (19), traversal (19), cgroups (19), eviction (19), huion (19), community (18), avoid (18), bus (18), writing (18), bugs (18), perf (18), trace (18), large (18), limit (18), values (18), handle (18), buffers (18), recipes (18), compilation (18), steam (18), finally (18), compiled (18), configuration (18), compile (18), turned (18), experience (18), left (18), due (18), ask (18), fact (18), haven (18), bpf (18), nir (18), across (18), button (18), complete (18), infrastructure (18), descriptors (18), internal (18), sebastian (17), wick (17), transfer (17), information (17), step (17), november (17), deck (17), useful (17), raspberry (17), config (17), took (17), full (17), distribution (17), service (17), core (17), stable (17), wrote (17), times (17), blend (17), parts (17), bad (17), contains (17), typically (17), instruction (17), controller (17), june (17), comes (17), christian (16), block (16), current (16), looking (16), looks (16), immediately (16), general (16), zink (16), clear (16), downstream (16), settings (16), installed (16), amd64 (16), later (16), myself (16), portal (16), months (16), nvidia (16), initial (16), text (16), udev (16), entire (16), kind (16), unfortunately (16), priority (16), especially (16), various (16), worse (16), windows (16), generation (16), adding (16), draw (16), generally (16), render (16), written (16), almost (16), expect (16), random (16), thus (16), rendering (16), mything (16), resource (16), patents (16), protection (16), sampler (16), dmem (16), evict (16), uclogic (16), blit (16), shadow (16), pkgcli (16), month (15), sent (15), thanks (15), care (15), ids (15), load (15), provide (15), supposed (15), weeks (15), type (15), details (15), mainline (15), built (15), developer (15), xdg (15), managed (15), soon (15), seems (15), implemented (15), operations (15), extra (15), gtt (15), fully (15), umr (15), writes (15), program (15), passes (15), put (15), behavior (15), march (15), event (15), dave (14), airlie (14), kms (14), ways (14), traces (14), specifically (14), asked (14), world (14), goes (14), audio (14), shows (14), mean (14), debug (14), select (14), pipewire (14), proprietary (14), ones (14), designed (14), handles (14), answer (14), error (14), everyone (14), job (14), stop (14), talking (14), similar (14), aren (14), half (14), merge (14), deal (14), processes (14), pixels (14), vendor (14), fixing (14), move (14), pixel (14), july (14), tried (14), host (14), against (14), effect (14), my_thing_new (14), depending (14), calling (14), engineer (14), zero (14), byte (14), triangle (14), tone (14), rust (14), aggressive (14), gitlab (13), message (13), improve (13), amount (13), option (13), wait (13), variables (13), topic (13), longer (13), high (13), setting (13), past (13), igalia (13), distributions (13), sending (13), ubuntu (13), maintainers (13), missing (13), expected (13), coming (13), whole (13), varlink (13), license (13), happen (13), noreply (13), blogger (13), screen (13), instance (13), instructions (13), ended (13), others (13), shell (13), view (13), give (13), filesystem (13), models (13), latency (13), depends (13), reference (13), tell (13), sense (13), existing (13), requires (13), static (13), miss (13), closest (13), evicting (13), swizzle (13), rgba (13), interested (12), themselves (12), threads (12), map (12), fast (12), implementing (12), none (12), tracing (12), rest (12), match (12), compiling (12), play (12), remote (12), building (12), basically (12), feature (12), said (12), day (12), network (12), proxy (12), allow (12), situation (12), hope (12), figure (12), server (12), tests (12), anyway (12), together (12), signing (12), mount (12), entries (12), modern (12), compute (12), points (12), takes (12), piece (12), capabilities (12), security (12), pipelines (12), whether (12), hat (12), analog (12), fun (12), away (12), somewhere (12), pointer (12), normal (12), logical (12), standard (12), tables (12), capture (12), within (12), surface (12), allocated (12), separately (12), february (12), suspend (12), 64k (12), native (12), etnaviv (12), scanner (12), pressure (12), peter (11), hutterer (11), lennart (11), poettering (11), soju (11), progress (11), metadata (11), json (11), handling (11), xdc (11), status (11), spent (11), basic (11), couple (11), below (11), cool (11), cross (11), mailing (11), bits (11), tag (11), local (11), home (11), concept (11), frame (11), seen (11), attempt (11), forward (11), proper (11), question (11), someone (11), generic (11), copy (11), link (11), matter (11), december (11), impossible (11), reads (11), keyboard (11), cannot (11), libraries (11), submit (11), component (11), goal (11), plane (11), enable (11), base (11), entirely (11), glib (11), material (11), scratch (11), intended (11), rays (11), jump (11), gastown (11), src (11), blob (11), wheels (11), reshape (11), libadwaita (11), web (10), short (10), switch (10), scanout (10), provided (10), relevant (10), extensions (10), share (10), debugging (10), following (10), subsystem (10), reboot (10), sound (10), hopefully (10), live (10), reasons (10), recipe (10), dmesg (10), related (10), execution (10), ensure (10), coding (10), focus (10), portals (10), went (10), happening (10), older (10), maintenance (10), layers (10), mutter (10), fail (10), certain (10), nouveau (10), clients (10), allowing (10), correctly (10), suite (10), owned (10), variable (10), beyond (10), repository (10), programming (10), wouldn (10), aka (10), practice (10), obviously (10), came (10), anyone (10), seeing (10), boundary (10), overall (10), exit (10), claim (10), known (10), heap (10), terms (10), preserved (10), intersection (10), cost (10), region (10), materials (10), pidfd (10), april (10), utility (10), booster (10), wacom (10), symlink (10), rsc (10), a8r8g8b8 (10), ctx (10), seam (10), fedora (9), simon (9), alex (9), opening (9), wlroots (9), board (9), dedicated (9), yourself (9), rendered (9), results (9), loading (9), special (9), lavapipe (9), lots (9), break (9), turn (9), showed (9), three (9), explained (9), worry (9), scenarios (9), configure (9), ecosystem (9), require (9), spec (9), runs (9), safe (9), leave (9), window (9), disabled (9), newer (9), mentioned (9), irc (9), contributed (9), associated (9), resume (9), particular (9), met (9), automatic (9), resolved (9), quickly (9), improved (9), present (9), become (9), responsible (9), enabling (9), names (9), utilities (9), although (9), told (9), translates (9), lower (9), gaming (9), vce1 (9), dev (9), mapping (9), along (9), broken (9), seem (9), allowed (9), conclusion (9), straight (9), come (9), modified (9), somehow (9), office (9), explicitly (9), design (9), numbers (9), hold (9), behind (9), flag (9), lack (9), original (9), described (9), social (9), linear (9), accessed (9), potentially (9), light (9), plumbing (9), recent (9), eraser (9), rectangle (9), lru (9), technical (8), mike (8), freedesktop (8), october (8), push (8), hdr (8), direct (8), updated (8), interact (8), stuff (8), glretrace (8), average (8), reading (8), generated (8), personal (8), presentation (8), setup (8), mix (8), automatically (8), affected (8), deployment (8), enables (8), packages (8), env (8), changing (8), drop (8), follow (8), options (8), ssh (8), menu (8), several (8), introduce (8), days (8), opportunity (8), talked (8), date (8), images (8), involved (8), selection (8), touch (8), loader (8), ignore (8), port (8), intel (8), encoding (8), including (8), messages (8), unit (8), highly (8), helped (8), story (8), hence (8), hash (8), serieses (8), tech (8), remove (8), bring (8), product (8), essentially (8), requests (8), friendly (8), includes (8), understand (8), language (8), execute (8), components (8), connectors (8), differences (8), paths (8), straightforward (8), remaining (8), field (8), close (8), blending (8), backend (8), final (8), benefit (8), understanding (8), bind (8), legacy (8), definitely (8), noticed (8), meant (8), aco (8), hand (8), cleanup (8), public (8), self (8), foobar (8), keeps (8), zeros (8), sizes (8), commits (8), indeed (8), executing (8), comment (8), unreal (8), coordinates (8), operation (8), dimension (8), absolute (8), contained (8), resolve (8), lose (8), deqp (8), blt (8), lut (8), composition (8), contiguous (8), virtual (8), endian (8), lamp (8), moves (8), shim (8), nodes (8), inode (8), dmemcg (8), foreground (8), pen (8), pad (8), unsigned (8), energy (8), a8b8g8r8 (8), 255 (8), packagekit (8), vertex (8), ethos (8), dwconv (8), hostile (8), packager (8), xtest (8), priorities (8), layout (7), please (7), timur (7), kristóf (7), natalie (7), vock (7), blogspot (7), delthas (7), actively (7), goguma (7), describe (7), blocks (7), crash (7), dependencies (7), dmabuf (7), taken (7), unless (7), overhead (7), major (7), loaded (7), slower (7), besides (7), global (7), stores (7), collection (7), term (7), links (7), arch (7), explain (7), deploy (7), architecture (7), modules (7), manager (7), plan (7), ready (7), workflow (7), latest (7), search (7), log (7), couldn (7), outputs (7), necessary (7), life (7), nowadays (7), introducing (7), filtering (7), outside (7), complex (7), linking (7), compatible (7), granted (7), ship (7), news (7), underlying (7), knowing (7), var (7), xwayland (7), hdmi (7), response (7), containing (7), regressions (7), mind (7), reset (7), person (7), published (7), v259 (7), rules (7), analyze (7), auto (7), location (7), happened (7), operating (7), preinstall (7), higher (7), additional (7), effort (7), accessible (7), continue (7), distro (7), manually (7), easier (7), slightly (7), responsibility (7), nobody (7), operate (7), among (7), submitted (7), group (7), pushed (7), types (7), tls (7), easily (7), applied (7), proton (7), defaults (7), gallium (7), reverse (7), dce6 (7), clearly (7), releases (7), huge (7), editor (7), fit (7), otherwise (7), frequency (7), plugged (7), exist (7), lead (7), figured (7), socket (7), somewhat (7), active (7), week (7), await (7), lifetime (7), user_data (7), keeping (7), choice (7), assume (7), documentation (7), void (7), pattern (7), manage (7), total (7), fewer (7), handled (7), certificate (7), opened (7), stored (7), exists (7), knows (7), worst (7), taking (7), difference (7), gives (7), accesses (7), tmax (7), float (7), regardless (7), coordinate (7), workgroup (7), ability (7), heuristics (7), whenever (7), clean (7), must (7), media (7), 570 (7), states (7), vivante (7), csc (7), composed (7), protocols (7), secure (7), forth (7), string (7), globe (7), arm (7), webcam (7), plasma (7), abstraction (7), dirs (7), scissor (7), draft (7), concat (7), conv2d (7), logistic (7), downstreams (7), gestures (7), keysym (7), authors (6), kde (6), ser (6), matthias (6), harry (6), powered (6), introduced (6), strings (6), info (6), reviewed (6), applying (6), transforms (6), félix (6), interesting (6), minecraft (6), frames (6), warning (6), trivial (6), apitrace (6), his (6), method (6), individual (6), extremely (6), today (6), deep (6), recording (6), website (6), architectures (6), structure (6), laptop (6), lists (6), force (6), previously (6), demo (6), followed (6), typical (6), third (6), fetch (6), ingredients (6), according (6), gui (6), history (6), store (6), cover (6), reduce (6), sharing (6), summary (6), beginning (6), track (6), include (6), significantly (6), integration (6), session (6), deadlocks (6), hacks (6), says (6), passed (6), devs (6), pointed (6), connected (6), led (6), plus (6), property (6), multi (6), range (6), primaries (6), directive (6), dependency (6), recovery (6), lines (6), hang (6), cause (6), hints (6), caused (6), brief (6), learning (6), publish (6), intend (6), cycle (6), v258 (6), begin (6), pull (6), services (6), repart (6), fields (6), posted (6), wild (6), reader (6), mainly (6), affect (6), reported (6), removed (6), approaches (6), medium (6), connection (6), repositories (6), dropping (6), difficult (6), applies (6), differently (6), needing (6), effectively (6), purpose (6), arbitrary (6), simpler (6), processing (6), overview (6), efficiently (6), computer (6), gone (6), learn (6), removing (6), external (6), functions (6), offloading (6), sub (6), originally (6), scope (6), engineering (6), develop (6), parallel (6), firepro (6), oland (6), burden (6), further (6), replace (6), replaced (6), relying (6), regression (6), mechanism (6), dce (6), sets (6), bandwidth (6), problematic (6), incredibly (6), dynamic (6), daemon (6), adds (6), readable (6), sends (6), mark (6), holds (6), my_thing_bar (6), returns (6), totalcoeff (6), failing (6), smaller (6), count (6), optimization (6), decoder (6), assumption (6), limited (6), stay (6), http (6), addresses (6), overwritten (6), properties (6), except (6), raw (6), stuck (6), brings (6), offset (6), ton (6), maps (6), literally (6), position (6), assuming (6), disable (6), lumen (6), relative (6), anywhere (6), workaround (6), decide (6), suddenly (6), scaling (6), offload (6), account (6), article (6), represent (6), specification (6), particularly (6), blogpost (6), produced (6), locking (6), stream (6), prompts (6), failure (6), lowering (6), imm3 (6), nir_def (6), destination (6), gles3 (6), screenshot (6), nearest (6), mpv (6), examples (6), land (6), timing (6), signed (6), reports (6), ctrl (6), integrated (6), expects (6), dockapps (6), asking (6), kept (6), background (6), detect (6), scan (6), bubble (6), fairly (6), ideally (6), dell (6), human (6), elgato (6), risk (6), prevent (6), junior (6), decision (6), prioritization (6), decides (6), pci (6), strips (6), tilt (6), hooray (6), styli (6), capability (6), words (6), o_path (6), privileged (6), cab (6), bcm (6), torvalds (6), consumption (6), workload (6), glmark2 (6), swaps (6), imagemagick (6), pkcon (6), dstbox (6), pcie (6), copyright (5), blumenkrantz (5), wentland (5), schaller (5), gmeiner (5), venus (5), included (5), serial (5), errors (5), nested (5), fallback (5), renderer (5), poisot (5), discussed (5), ideas (5), efforts (5), streaming (5), generate (5), cortex (5), secs (5), fps (5), codegen (5), kinds (5), represented (5), logic (5), style (5), improvement (5), six (5), thinking (5), reached (5), download (5), videos (5), practices (5), contributions (5), x86 (5), steamos (5), cached (5), rc6 (5), installing (5), booted (5), exposed (5), creating (5), internet (5), tracking (5), fails (5), given (5), regarding (5), levels (5), flags (5), starting (5), matching (5), tasks (5), optimize (5), created (5), platform (5), google (5), tooling (5), motivation (5), save (5), integrate (5), friends (5), instances (5), remotes (5), reasonable (5), deadlock (5), consider (5), ran (5), remain (5), looked (5), switched (5), cursor (5), mobile (5), drafts (5), packed (5), hangs (5), insert (5), ring (5), dealing (5), became (5), discuss (5), jobs (5), companies (5), corresponding (5), private (5), vmspawn (5), tab (5), factory (5), url (5), leading (5), helps (5), nearly (5), compared (5), throughout (5), skip (5), shipped (5), flexible (5), serve (5), sounds (5), conceptually (5), benefits (5), box (5), uapi (5), dispatches (5), opencl (5), entry (5), sadly (5), switching (5), independent (5), complicated (5), mailman (5), engines (5), chat (5), passing (5), remains (5), vendors (5), matrix (5), finish (5), efficient (5), lts (5), pop (5), solutions (5), vkd3d (5), relatively (5), closed (5), success (5), v260 (5), transaction (5), partition (5), libc (5), islands (5), tahiti (5), afterwards (5), accepted (5), queue (5), reach (5), validation (5), clocks (5), script (5), figuring (5), capable (5), heavy (5), absolutely (5), enjoy (5), virgl_test_server (5), fundamental (5), pipe (5), moment (5), transport (5), breaks (5), magic (5), eol (5), perspective (5), kick (5), fibers (5), acquire (5), helpers (5), g_auto (5), my_other_thing_bar (5), gpointer (5), dexfuture (5), ref (5), condition (5), dex_await (5), context_get_foo (5), critical (5), tiny (5), checked (5), math (5), feedback (5), maximum (5), chain (5), covers (5), gemini (5), decades (5), quality (5), scenario (5), kernels (5), channels (5), trust (5), certainly (5), meaning (5), brand (5), knowledge (5), area (5), triangles (5), hitt (5), closesthit (5), blue (5), fragment (5), inlining (5), rule (5), sample (5), smashed (5), luckily (5), counter (5), flow (5), scale (5), notice (5), groups (5), effects (5), perform (5), analysis (5), twice (5), alone (5), ends (5), scene (5), slow (5), significant (5), tend (5), stopped (5), whatever (5), interpret (5), repo (5), pointing (5), towards (5), storage (5), honeykrisp (5), ignored (5), graph (5), nir_fmul (5), dst (5), overlay (5), parse (5), gc7000 (5), kdfs (5), marked (5), preferred (5), cert (5), helper (5), edit (5), surfaces (5), discussions (5), sufficient (5), constraints (5), powerpc (5), crate (5), console (5), minimum (5), yes (5), gtk4 (5), licensing (5), publicly (5), activation (5), cyberpunk (5), 2077 (5), protected (5), cachyos (5), proximity (5), uinput (5), symlinks (5), attacker (5), ssl (5), matters (5), busy (5), trick (5), scalar (5), libfftw3 (5), nano (5), u_blitter (5), blitter (5), synth_scissor (5), quad (5), vertices (5), diagonal (5), stating (5), hackfest (5), npu (5), work_items (5), reporting (5), infinity (5), foundation (4), gstreamer (4), rodrigo (4), robert (4), melissa (4), wen (4), mary (4), martin (4), hari (4), rana (4), daniel (4), chris (4), marks (4), edid (4), printed (4), gamescope (4), topics (4), limitations (4), earlier (4), train (4), vienna (4), conference (4), enjoyed (4), discussing (4), awesome (4), konstantin (4), bin (4), sequence (4), speak (4), arguments (4), initially (4), implementations (4), equal (4), room (4), zmike (4), complexity (4), powerful (4), expand (4), continued (4), nvk (4), ground (4), slide (4), channel (4), workflows (4), reviewers (4), unnecessary (4), steamdeck (4), configured (4), steps (4), accessing (4), preparing (4), period (4), compression (4), binaries (4), wrap (4), volunteers (4), showing (4), involvement (4), sandboxing (4), permission (4), libdex (4), docs (4), breaking (4), compatibility (4), oci (4), aside (4), unstable (4), sort (4), early (4), shouldn (4), expose (4), creation (4), situations (4), believe (4), probe (4), hacked (4), tale (4), connector (4), returning (4), alongside (4), bouncer (4), replies (4), profile (4), toolkit (4), upgrades (4), upgraded (4), super (4), potential (4), creative (4), igt (4), narrow (4), strategy (4), improving (4), replacement (4), floating (4), scheduler (4), deucher (4), chance (4), valve (4), speaking (4), v256 (4), v257 (4), twitter (4), removal (4), origin (4), userdb (4), discovery (4), ipc (4), tmp (4), areas (4), stories (4), pay (4), framebuffer (4), robust (4), september (4), truly (4), perfect (4), neither (4), usr (4), lib (4), dynamically (4), creates (4), simplest (4), tells (4), increase (4), accessibility (4), volunteer (4), hey (4), manufacturers (4), unlike (4), isa (4), act (4), additionally (4), glsl (4), spir (4), wants (4), decoding (4), programs (4), developed (4), simplified (4), broad (4), decode (4), migrated (4), migration (4), database (4), mls (4), hood (4), certificates (4), front (4), wire (4), reality (4), translation (4), choose (4), giving (4), implements (4), directx (4), existed (4), mention (4), wine (4), appropriate (4)
Text of the page (random words):
ld help me catch a faulty access at runtime all i could really do was look at all the shaders in that ray tracing pipeline luckily that one didn t have too many and see if they somehow store to wrong stack locations all shaders in that pipeline were completely fine though i checked every single scratch instruction in every shader if the offsets were correct luckily the offsets are constants encoded in the disassembly so this part was trivial i also verified that the stack pointer was incremented by the correct values everything was completely fine no shader was smashing its callers stack i found the bug more or less by complete chance the shader code was indeed completely correct there were no miscompilations happening instead the scratch memory area the hw allocated was smaller than what each thread actually used because i forgot to multiply by the number of threads in a wavefront in one place the stack wasn t smashed by the called function it was smashed by a completely different thread whether your stack would get smashed was essentially complete luck depending on where the hw placed your scratch memory area other wavefront s scratch and how those wavefronts execution was timed relative to yours i don t think i would ever have been able to deduce this from any debugger output so i should probably count myself lucky i stumbled upon the fix regardless silent hill 2 s reflections sample the sky color did i talk about unreal engine yet let s talk about unreal engine some more silent hill 2 uses lumen for its reflection gi system and somehow lumen from ue 5 3 specifically was the only thing that seemed to reproduce this particular bug in every way the avowed bug was tolerable to debug this one was pure suffering there were no gpu hangs all shaders ran completely fine that means using umr and getting a rough idea of where the issue is was off the table from the start unfortunately the rt pipeline was also way too large to analyze there were a few hundred hit shaders but there also were seven completely different ray generation shaders having little other recourse i started trying to at least narrow down the ray generation shader that triggered the fault i used mesa s debugging environment variables to dump the spir v of all the shaders the driver encountered and then used spirv cross on all of them to turn them into editable glsl for each ray generation shader i d comment out the imagestore instructions that stored the rt result to some image recompiled the modified glsl to spir v and instructed mesa to sneakily swap out the original ray gen spir v with my modified one then i re ran the game to see if anything changed this indeed led me to find the correct ray generation shader but the lead turned into a dead end there was little insight other than that the ray was indeed executing the miss shader everything seemed correct so far and if i hadn t known these rays didn t miss about 3 commits ago i honestly wouldn t even have suspected anything was wrong at all the next thing i tried was commenting out random things in ray traversal code skipping over all any hit intersection shaders yielded no change and neither did replacing the ray flags culling masks with known good constants to rule out wrong values being passed as parameters what did fix the result however was commenting out the calls to closest hit shaders now if closest hit shaders get called and that makes miss shaders execute somehow you d perhaps think we d be calling the wrong function maybe we confuse the shader binding table where we load the addresses of shaders to call from to verify that assumption i also disabled calling any and all miss shaders i zeroed out the addresses in the shader handles to make extra sure there was no possible way that a miss shader could ever get called to keep things working i replaced the code that calls miss shaders with the relevant code fragment from ue s miss shader essentially inlining the shader myself nothing changed from that that means a closest hit shader being executed somehow resulted in a ray traversal itself returning a miss not the wrong function being called perhaps the closest hit shaders corrupt some caller values again since the rt pipeline was too big to analyze i tried to narrow down the suspicious shaders by only disabling specific closest hit shaders i also discovered that just making all closest hit shaders no ops fixed things as well even if they do get called sure enough at some point i had a specific closest hit shader where the issue went away once i deleted all code from it made it a no op i even figured out a specific register that if explicitly preserved would make the issue go away the only problem was that this register corresponded to one part of the return value of the closest hit shader that is a register that the shader was supposed to overwrite from here on out it gets completely nonsensical i will save you the multiple days of confusion hair pulling desperation and agony over the complete and utter undebuggableness of lumen s rt setup and skip to the solution it turned out the faulty closest hit shader i found was nothing but a red herring lumen s rt consists of 6 rt dispatches most of which i haven t exactly figured out the purpose of but what i seemed to observe was that the faulty rt dispatch used the results of the previous rt dispatch to make decisions on whether to trace any rays or not making the closest hit shaders a no op did nothing but disable the subsequent tracerays that actually exhibited the issue since these rt dispatches used the same rt pipelines that meant virtually any avenue i had of debugging this driver side was completely meaningless any hacks inside the shader compiler might actually work around the issue or just affect a conceptually unrelated dispatch that happens to disable the actually problematic rays determining which was the case was nearly impossible especially in a general case i never really figured out how to debug this issue once again what saved me was a random epiphany out of the blue in fact now that i know what the bug was i m convinced i would ve never found this through a debugger either the issue turned out to be in an optimization for what s commonly called tail calls if you have a function that calls another function at the very end just before returning a common optimization is to simply turn that call into a jump and let the other function return directly to the caller imagine ray traversal working a bit like this c code hitt is the t value of the ray at the hit point payload closesthit float hitt tmax is the maximum range of the ray if there is no hit with a t tmax the ray misses instead payload traversal float tmax do something if hit return closesthit hitt gets replaced with a jmp closesthit returns directly to traversal s caller more specifically the bug was with how preserved parameters and tail calls interact function callers are generally supposed to assume that preserved parameters do not change their value over the function call that means it s safe to reuse that register after the call and assuming it still has the value the caller put in however in the example above let s assume closesthit has the same calling convention as traversal that means closesthit s parameter needs to go into the same register as traversal s parameter and thus the register gets overwritten if traversal s caller was assuming that the parameter is preserved that would mean the value of tmax has just been overwritten with the value of hitt without the caller knowing if traversal now gets called again from the same place the value of tmax is not the intended value but the hitt value from the previous iteration which is definitely smaller than tmax put shortly if all these conditions are met a smaller than intended tmax could cause rays to miss when they were intended to hit once again i got incredibly lucky and stumbled upon the bug by complete chance the gpu gods seem to be in good spirits for my endeavours i pray it stays this way footnotes shader in this context really means any program that runs on the gpu the rt pipeline is also made of shaders shaders determine where the points and triangles making up each object end up on screen there are compute shaders for generic computing and so on there actually is another use case where this becomes relevant on gpu and that is gpgpu code like cuda hip opencl cuda hip allow you to write c for the gpu in a much more cpu like programming environment opencl uses c and you run into all the same problems there this also means all the major gpu vendors had already written their solutions for these problems when raytracing came around there are opencl kernels that end up really really bad if you don t have proper function calls in the compiler which rusticl suffers from right now and the function calls work in radv aco may end up proving useful for those as well even your main function works like that actually unless you have some form of freestanding environment all your program code works like that in radv the stack pointer is actually constant across a function and pushing popping to from the stack is implemented by adding another offset to the constant stack pointer in load store instructions this allows to make the stack pointer an sgpr instead of a vgpr and simplifies stack accesses that aren t push pop we support raytracing before vega too we support function calls on all gpus as well through a little magic in dreaming up a buffer descriptor with specific memory swizzling to achieve the same addressing that scratch_ instructions use on vega and later by natalie vock at january 30 2026 12 00 am january 26 2026 lennart poettering introducing amutable today we announce amutable our new company we blixtra hachyderm io brauner mastodon social davidstrauss mastodon social rodrigo_rata mastodon social michaelvogt mastodon social pothos fosstodon org zbyszek fosstodon org daandemeyer mastodon social cyphar mastodon social jrocha floss social and yours truly are building the next generation of linux systems with integrity determinism and verification every step of the way for more information see https amutable com blog introducing amutable by lennart poettering at january 26 2026 11 00 pm january 23 2026 mike blumenkrantz unpopular opinion a big day for graphics today is a big day for graphics we got shiny new extensions and a new rm2026 profile huzzah vk_ext_descriptor_heap is huge i mean in terms of surface area the sheer girth of the spec and the number of years it s been under development seriously check out that contributor list is it the longest ever i m not about to do comparisons but it might be so this is a big deal and everyone is out in the streets i assume to celebrate such a monumental leap forward and i m not all hats off person to person let s talk power overwhelming it s true that descriptor heap is incredibly powerful it perfectly exemplifies everything that vulkan is low level verbose flexible vkd3d proton will make good use of it eventually as this more closely relates to the dx12 mechanics it translates game engines will finally have something that allows them to footgun as hard as they deserve this functionality even maps more closely to certain types of hardware as described by a great gfxstrand blog post there is to my knowledge just about nothing you can t do with vk_ext_descriptor_heap it s really really good and i m proud of what the vulkan wg has accomplished here but i don t like it what is this incredibly hot take it s a risky position i don t want anyone s takeaway to be mike shoots down new descriptor extension as worst idea in history we re all smart people and we can comprehend nuance like the difference between rb and ab in egl patch review protip if anyone ever gives you an rb they re fucking lying because nobody can fully comprehend that code in short i don t expect zink to ever move to descriptor heap if it does it ll be years from now as a result of taking on some other even more amazing extension which depends on heaps why is this i m sure you ask well there s a few reasons code complexity like all things vulkan getting it right with descriptors meant creating an api so verbose that i could write novels with fewer characters than some of the struct names everything is brand new with no sharing reuse of any existing code as anyone who has ever stepped into an unfamiliar bit of code and thought this is garbage i should rewrite it all knows too well existing code is always the worst code but it s also the code that works and is tied into all the other existing code pretty soon attempting to parachute in a new descriptor api becomes rewriting literally everything because it s all incompatible great for those with time and resources to spare not so great for everyone else gone are image views which is cool and good except that everything else in vulkan still uses them meaning now all image descriptors need an extra pile of code to initialize the new structs which are used only for heaps hope none of that was shared between rendering and descriptor use because now there will be rendering use and descriptor use and they are completely separate do i hate image views undoubtedly and i like this direction but hit me up in a few more years when i can delete them everywhere shader interfaces are going to be the source of most pain sure it s very possible to keep existing shader infrastructure and use the mapping api with its glorious nested structs but now you have an extra 1000 lines of mapping api structs to juggle on top alternatively you can get ai to rewrite all your shaders to use the new spirv extension and have direct heap access performance descriptor heap maps closer to hardware which should enable users to get more performant execution by eliminating indirection with direct heap access this is great full stop unless you re like zink where the only way to avoid shredding 47 cpus every time you change descriptors is to use a sliding offset for descriptors and update it each draw i e vk_descriptor_mapping_source_heap_with_push_index_ext then you can t use direct heap access which means you re still indirecting your descriptor access which has always been the purported perf pain point of 1 0 descriptors and ext_descriptor_buffer you do not pass go you do not collect 200 all you do is write a ton of new code opinionated development there s a tremendous piece of exposition outlining the reasons why ext_descriptor_heap exists in the proposal none of these items are incorrect i ve even contributed to this document if i were writing an engine from scratch i would certainly expect to use heaps for portability reasons i e in theory it should eventually be available on all hardware but as flexible and powerful as descriptor heap is there are some annoying cases where it passes the buck to the user specifically i m talking about management of the sampler heap 1 0 descriptors and descriptor buff...
|