fix(vk): draws with 8-bit indices are drawn on GPUs without 8-bit index buffers (RADV on GCN 1-2) #541

Open
Yeetbot90 wants to merge 2 commits from Yeetbot90/Longshot:fix/gcn-black-screen into main
Contributor

Type: fix · Risk: low · Tested on: Windows 11, RX 9070 XT (GCN 1-2 path forced with RX_VK_INDEX_UINT8=0) · Needs: Linux, AMD GCN 1 or 2 on RADV

Why

On Linux, older AMD cards (GCN 1 and 2: HD 7000, R9 270 to 390, R7 260 to 360) show only a black screen from the start, while the game runs underneath with sound and controls. Their driver has no 8-bit index buffers, and Longshot left out every draw that uses them, among them the ones that put the picture on screen. A player reported it with an R9 290 on Fedora 44 and v3.0.0-rc.3; no issue on the tracker fits (searched for R9 290, GCN, black screen, uint8).

How to reproduce

Seen on: Fedora 44, Radeon R9 290 (RADV HAWAII, Mesa 26.2.6), v3.0.0-rc.3; on any GPU with RX_VK_INDEX_UINT8=0 from this PR
Settings and switches: defaults
Steps: start the game and wait for the intro and the title
Expected: the intro, then the title over its movie
Actual: a black screen with the sound playing, the Esc menu working; the log shows skips a frame by vk_draw.cpp line: 7385: 2.0 (rc.3's line for if (d.indexed && d.itype == 0 && !dev.index_uint8) SKIP_HERE();)

What changed

Draws with 8-bit indices are no longer left out on a GPU that has no 8-bit index buffers: their indices are copied into 16-bit ones on the CPU and drawn from those, as the quads path already does with its indices. A test switch makes any GPU take that path, a game-free test covers it, and the common-issues page no longer sends these players after a mesh shader setting that doesn't apply.

  • renderer: u8_indices_widened() and u8_indices_read() in gpu/vk/vk_draw.cpp. When !dev.index_uint8, an indexed draw's 8-bit indices are read as submitted and written as 16-bit ones into the recording's stream; a restart index stays one (0xFF becomes 0xFFFF where the draw restarts). An indirect draw widens as far as its records reach (first index + count; a count buffer limits the records). draw() binds the result through its existing bind_index calls as VK_INDEX_TYPE_UINT16, where it used to SKIP_HERE(). The first widening is logged once: vk: 8-bit indices are widened to 16 bits on the CPU (this card has no 8-bit index buffers).
  • device: RX_VK_INDEX_UINT8=0 in gpu/vk/vk_main.cpp does not ask for VK_EXT_index_type_uint8.
  • why only these cards: RADV sets .EXT_index_type_uint8 = pdev->info.gfx_level >= GFX8 (the KHR extension and the feature alike) in src/amd/vulkan/radv_physical_device.c, so GCN 1 and 2 (GFX6, GFX7) never have it. Every other driver we run on has it.
  • tests: tests/test_u8_indices.py cuts both functions out of vk_draw.cpp and compiles them with stubs: values, restart on and off, a draw of none, a failed read, indirect records (instances 0 left aside, a count buffer, a wider stride, past 16M indices refused). It also checks that draw() no longer skips these draws and binds them as 16-bit.
  • docs: the switch in docs/development.md. In docs/common-issues.md: the game doesn't create longshot_env.txt (the player looked for it after the AMD tip), RX_VK_MESH_SHADERS=compute changes nothing on Linux AMD where it is already the path, and the vulkaninfo | grep mesh check, which matched llvmpipe's VK_EXT_mesh_shader on every Mesa system, now greps with deviceName.
  • docs/tested/: four files, the two interleaved pairs below.

Measurements

Verdict: it fixes it: with the GCN 1-2 path forced, 0 of 114 screenshots show a picture without the widening and 111 of 115 with it (the other four are the first frames, before the intro), at 60 fps; it passed.

Baseline: the before column is e072164e with this PR's RX_VK_INDEX_UINT8 switch alone, the after column e072164e with this PR's whole renderer diff (vk_draw.cpp, vk_main.cpp), which applies to it unchanged. main can't show the bug here: it has no switch, and no GPU on this PC lacks 8-bit index buffers. The game build on this PC is from e072164e (renderer interface 21; main is at 23 now), so the runs were made on it and not repeated after the rebase onto aa95d35f; the widening is unchanged by the rebase.
Hardware: Windows 11 Home 26200, RX 9070 XT, AMD 26.10.1 (LLPC), Ryzen 9 7900X, 31 GB RAM
Scene: from the start to the title over its movie, no input; 1280x720 headless (HOS_HEADLESS=1), muted, fresh profile, empty caches, RX_VK_PRECOMPILE=0, RX_VK_INDEX_UINT8=0
Method: 120 s per run, two interleaved pairs (before, after, before, after); a screenshot every 120 presents (RX_VK_SHOTS), each shot's mean brightness (Rec. 709 luma, 0-255, every 8th pixel), a shot "with a picture" when over 1% of its pixels are above 16; the log's frame reports; the median of the two runs
How to reproduce: any GPU, RX_VK_INDEX_UINT8=0 in longshot_env.txt or the environment; start the game. Without the widening the screen stays black; with it the intro and title show

Before, RX_VK_INDEX_UINT8=0: the switch alone @ e072164e After, RX_VK_INDEX_UINT8=0: this PR @ 4b44f569, its renderer diff on e072164e
Screenshots with a picture, run 1 0 of 56 56 of 58
Screenshots with a picture, run 2 0 of 58 55 of 57
Mean brightness, median of 2 runs (0-255) 0.0 84.9
Left out of a title frame 2 draws at the 8-bit check + 12 movie-network dispatches 12 movie-network dispatches (left out by design)
Frame rate at the title, runs 1 and 2 60.0, 60.0 fps 60.0, 56.9 fps
before:  vk: 6720 presents, 60.0 fps; a frame: 14 draws (14 skipped) ...
         vk: skips a frame by vk_draw.cpp line: 7808: 2.0 9769: 12.0      (7808: the 8-bit index skip)
after:   vk: 8-bit indices are widened to 16 bits on the CPU (this card has no 8-bit index buffers)
         vk: 6840 presents, 60.0 fps; a frame: 16 draws (12 skipped) ...
         vk: skips a frame by vk_draw.cpp line: 9812: 12.0
R9 290 (RADV HAWAII, Mesa 26.2.6, v3.0.0-rc.3), the player's log:
         vk: 2040 presents, 60.0 fps; a frame: 14 draws (14 skipped) ...
         vk: skips a frame by vk_draw.cpp line: 7385: 2.0 9298: 12.0      (rc.3's lines: the same two checks)

Screenshots, run 1 at the same presents (360, 2640, 4800, 6960), in the first comment: #541 (comment) (top row: Before, the switch alone @ e072164e, all black; bottom row: After, this PR's renderer diff on e072164e).

Flags and settings

This PR adds one switch, for testing only: it makes any GPU take the GCN 1-2 path.

Flag What it is Before this PR After this PR Effect Helps / doesn't help / untested Recommendation
RX_VK_INDEX_UINT8 An environment switch: 0 does not ask the driver for 8-bit index buffers Not there Unset (8-bit index buffers asked for wherever the driver has them) 0: draws with 8-bit indices are widened to 16-bit on the CPU, as on RADV GCN 1-2 Helps reproduce and test the GCN 1-2 path on any GPU; doesn't help players; untested on Linux Off: only for testing

Testing

Tested: python -I -B tests/run_all.py on Windows 11 (llvm-mingw clang 22) after the rebase onto aa95d35f: 494 passed, 21 failed, 79 skipped. The same 21 fail on a clean aa95d35f on this PC (test_appimage_player_build, test_bake_portability, test_cpm_discovery, test_cpp_preflight, test_crash_dialog, test_env_on, test_fpx_sticky, test_lift_cache, test_lift_cleanup_error, test_linux_preflight, test_make_game_cache, test_make_game_prepare, test_missing_nup, test_oot_state_tap, test_options_budget_once, test_readback_late, test_release, test_spawn_emit, test_tested_configurations, test_vk_pgo, test_walk_key: Windows toolchain and environment, code this PR doesn't touch). tests/test_u8_indices.py passes with clang++ and g++ and fails on main at its first check. vk_draw.cpp compiles with -Wall -Wextra and nothing on the changed lines. In the game: the four runs under Measurements, RX 9070 XT, AMD 26.10.1, with RX_VK_INDEX_UINT8=0, renderer-only builds (RX_VK_ONLY=1 RX_RELEASE=1 nx2/build.py --standalone) on e072164e.

Not tested: a GCN 1 or 2 card itself (none here); play past the title, where other draws may use 8-bit indices; indirect draws with 8-bit indices in the game (none at the title; the test covers them); a Linux build of this change (renderer code without OS-specific parts); the runs on aa95d35f (this PC's game build is at renderer interface 21).

Must be tested:

  • Linux, AMD GCN 1 or 2 (R9 270-390, R7 260-360, HD 7000) on RADV: start the game from a fresh start and play a few minutes past the title, expecting the intro, the title and the game drawn instead of a black screen, and vk: 8-bit indices are widened in the log with no skips a frame by vk_draw.cpp line at the 8-bit index check (by hand: test request T-H95J; copy the log's vk: device 0 and skips a frame lines)

Risks

What could break: only GPUs without 8-bit index buffers take the new path (RADV on GCN 1-2, or RX_VK_INDEX_UINT8=0); everywhere else the draw is recorded as before. On those GPUs, indices the GPU itself writes rather than the game's CPU would be read stale, as the quads' already are, and an indirect draw whose records the GPU writes could widen too few. The two lines this changes in the indexed-indirect branch are next to the one #434 changes (extent_bind for the index buffer): whichever merges second takes both.

Turning it off: revert the commit.

Compatibility: Nothing changes: no save, options file, cache or MKWVK_API_VERSION change; on GCN 1-2 the draws that were missing now show.

Checklist

Everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main.
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named).
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
  • Switches documented (docs/development.md; the README for a menu row) and shipped at their recommended value.
  • Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen.
  • A file in docs/tested/ for each new measured run (format in docs/tested-configurations.md).
  • A game-free test added for the fix, failing on main and passing here.
  • Docs updated.
**Type:** fix · **Risk:** low · **Tested on:** Windows 11, RX 9070 XT (GCN 1-2 path forced with `RX_VK_INDEX_UINT8=0`) · **Needs:** Linux, AMD GCN 1 or 2 on RADV ## Why On Linux, older AMD cards (GCN 1 and 2: HD 7000, R9 270 to 390, R7 260 to 360) show only a black screen from the start, while the game runs underneath with sound and controls. Their driver has no 8-bit index buffers, and Longshot left out every draw that uses them, among them the ones that put the picture on screen. A player reported it with an R9 290 on Fedora 44 and v3.0.0-rc.3; no issue on the tracker fits (searched for R9 290, GCN, black screen, uint8). ## How to reproduce **Seen on:** Fedora 44, Radeon R9 290 (RADV HAWAII, Mesa 26.2.6), v3.0.0-rc.3; on any GPU with `RX_VK_INDEX_UINT8=0` from this PR **Settings and switches:** defaults **Steps:** start the game and wait for the intro and the title **Expected:** the intro, then the title over its movie **Actual:** a black screen with the sound playing, the Esc menu working; the log shows `skips a frame by vk_draw.cpp line: 7385: 2.0` (rc.3's line for `if (d.indexed && d.itype == 0 && !dev.index_uint8) SKIP_HERE();`) ## What changed Draws with 8-bit indices are no longer left out on a GPU that has no 8-bit index buffers: their indices are copied into 16-bit ones on the CPU and drawn from those, as the quads path already does with its indices. A test switch makes any GPU take that path, a game-free test covers it, and the common-issues page no longer sends these players after a mesh shader setting that doesn't apply. - renderer: `u8_indices_widened()` and `u8_indices_read()` in `gpu/vk/vk_draw.cpp`. When `!dev.index_uint8`, an indexed draw's 8-bit indices are read as submitted and written as 16-bit ones into the recording's stream; a restart index stays one (0xFF becomes 0xFFFF where the draw restarts). An indirect draw widens as far as its records reach (first index + count; a count buffer limits the records). `draw()` binds the result through its existing `bind_index` calls as `VK_INDEX_TYPE_UINT16`, where it used to `SKIP_HERE()`. The first widening is logged once: `vk: 8-bit indices are widened to 16 bits on the CPU (this card has no 8-bit index buffers)`. - device: `RX_VK_INDEX_UINT8=0` in `gpu/vk/vk_main.cpp` does not ask for `VK_EXT_index_type_uint8`. - why only these cards: RADV sets `.EXT_index_type_uint8 = pdev->info.gfx_level >= GFX8` (the KHR extension and the feature alike) in `src/amd/vulkan/radv_physical_device.c`, so GCN 1 and 2 (GFX6, GFX7) never have it. Every other driver we run on has it. - tests: `tests/test_u8_indices.py` cuts both functions out of `vk_draw.cpp` and compiles them with stubs: values, restart on and off, a draw of none, a failed read, indirect records (instances 0 left aside, a count buffer, a wider stride, past 16M indices refused). It also checks that `draw()` no longer skips these draws and binds them as 16-bit. - docs: the switch in `docs/development.md`. In `docs/common-issues.md`: the game doesn't create `longshot_env.txt` (the player looked for it after the AMD tip), `RX_VK_MESH_SHADERS=compute` changes nothing on Linux AMD where it is already the path, and the `vulkaninfo | grep mesh` check, which matched llvmpipe's `VK_EXT_mesh_shader` on every Mesa system, now greps with `deviceName`. - `docs/tested/`: four files, the two interleaved pairs below. ## Measurements **Verdict:** it fixes it: with the GCN 1-2 path forced, 0 of 114 screenshots show a picture without the widening and 111 of 115 with it (the other four are the first frames, before the intro), at 60 fps; it passed. Baseline: the before column is e072164e with this PR's `RX_VK_INDEX_UINT8` switch alone, the after column e072164e with this PR's whole renderer diff (`vk_draw.cpp`, `vk_main.cpp`), which applies to it unchanged. main can't show the bug here: it has no switch, and no GPU on this PC lacks 8-bit index buffers. The game build on this PC is from e072164e (renderer interface 21; main is at 23 now), so the runs were made on it and not repeated after the rebase onto aa95d35f; the widening is unchanged by the rebase. Hardware: Windows 11 Home 26200, RX 9070 XT, AMD 26.10.1 (LLPC), Ryzen 9 7900X, 31 GB RAM Scene: from the start to the title over its movie, no input; 1280x720 headless (`HOS_HEADLESS=1`), muted, fresh profile, empty caches, `RX_VK_PRECOMPILE=0`, `RX_VK_INDEX_UINT8=0` Method: 120 s per run, two interleaved pairs (before, after, before, after); a screenshot every 120 presents (`RX_VK_SHOTS`), each shot's mean brightness (Rec. 709 luma, 0-255, every 8th pixel), a shot "with a picture" when over 1% of its pixels are above 16; the log's frame reports; the median of the two runs How to reproduce: any GPU, `RX_VK_INDEX_UINT8=0` in `longshot_env.txt` or the environment; start the game. Without the widening the screen stays black; with it the intro and title show | | Before, RX_VK_INDEX_UINT8=0: the switch alone @ e072164e | After, RX_VK_INDEX_UINT8=0: this PR @ 4b44f569, its renderer diff on e072164e | |---|---|---| | Screenshots with a picture, run 1 | 0 of 56 | 56 of 58 | | Screenshots with a picture, run 2 | 0 of 58 | 55 of 57 | | Mean brightness, median of 2 runs (0-255) | 0.0 | 84.9 | | Left out of a title frame | 2 draws at the 8-bit check + 12 movie-network dispatches | 12 movie-network dispatches (left out by design) | | Frame rate at the title, runs 1 and 2 | 60.0, 60.0 fps | 60.0, 56.9 fps | ``` before: vk: 6720 presents, 60.0 fps; a frame: 14 draws (14 skipped) ... vk: skips a frame by vk_draw.cpp line: 7808: 2.0 9769: 12.0 (7808: the 8-bit index skip) after: vk: 8-bit indices are widened to 16 bits on the CPU (this card has no 8-bit index buffers) vk: 6840 presents, 60.0 fps; a frame: 16 draws (12 skipped) ... vk: skips a frame by vk_draw.cpp line: 9812: 12.0 R9 290 (RADV HAWAII, Mesa 26.2.6, v3.0.0-rc.3), the player's log: vk: 2040 presents, 60.0 fps; a frame: 14 draws (14 skipped) ... vk: skips a frame by vk_draw.cpp line: 7385: 2.0 9298: 12.0 (rc.3's lines: the same two checks) ``` Screenshots, run 1 at the same presents (360, 2640, 4800, 6960), in the first comment: https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/541#issuecomment-20153 (top row: Before, the switch alone @ e072164e, all black; bottom row: After, this PR's renderer diff on e072164e). ### Flags and settings This PR adds one switch, for testing only: it makes any GPU take the GCN 1-2 path. | Flag | What it is | Before this PR | After this PR | Effect | Helps / doesn't help / untested | Recommendation | |---|---|---|---|---|---|---| | `RX_VK_INDEX_UINT8` | An environment switch: `0` does not ask the driver for 8-bit index buffers | Not there | Unset (8-bit index buffers asked for wherever the driver has them) | `0`: draws with 8-bit indices are widened to 16-bit on the CPU, as on RADV GCN 1-2 | Helps reproduce and test the GCN 1-2 path on any GPU; doesn't help players; untested on Linux | Off: only for testing | ## Testing **Tested:** `python -I -B tests/run_all.py` on Windows 11 (llvm-mingw clang 22) after the rebase onto aa95d35f: 494 passed, 21 failed, 79 skipped. The same 21 fail on a clean aa95d35f on this PC (`test_appimage_player_build`, `test_bake_portability`, `test_cpm_discovery`, `test_cpp_preflight`, `test_crash_dialog`, `test_env_on`, `test_fpx_sticky`, `test_lift_cache`, `test_lift_cleanup_error`, `test_linux_preflight`, `test_make_game_cache`, `test_make_game_prepare`, `test_missing_nup`, `test_oot_state_tap`, `test_options_budget_once`, `test_readback_late`, `test_release`, `test_spawn_emit`, `test_tested_configurations`, `test_vk_pgo`, `test_walk_key`: Windows toolchain and environment, code this PR doesn't touch). `tests/test_u8_indices.py` passes with clang++ and g++ and fails on main at its first check. `vk_draw.cpp` compiles with `-Wall -Wextra` and nothing on the changed lines. In the game: the four runs under Measurements, RX 9070 XT, AMD 26.10.1, with `RX_VK_INDEX_UINT8=0`, renderer-only builds (`RX_VK_ONLY=1 RX_RELEASE=1 nx2/build.py --standalone`) on e072164e. **Not tested:** a GCN 1 or 2 card itself (none here); play past the title, where other draws may use 8-bit indices; indirect draws with 8-bit indices in the game (none at the title; the test covers them); a Linux build of this change (renderer code without OS-specific parts); the runs on aa95d35f (this PC's game build is at renderer interface 21). **Must be tested:** - Linux, AMD GCN 1 or 2 (R9 270-390, R7 260-360, HD 7000) on RADV: start the game from a fresh start and play a few minutes past the title, expecting the intro, the title and the game drawn instead of a black screen, and `vk: 8-bit indices are widened` in the log with no `skips a frame by vk_draw.cpp` line at the 8-bit index check (by hand: test request T-H95J; copy the log's `vk: device 0` and `skips a frame` lines) ## Risks **What could break:** only GPUs without 8-bit index buffers take the new path (RADV on GCN 1-2, or `RX_VK_INDEX_UINT8=0`); everywhere else the draw is recorded as before. On those GPUs, indices the GPU itself writes rather than the game's CPU would be read stale, as the quads' already are, and an indirect draw whose records the GPU writes could widen too few. The two lines this changes in the indexed-indirect branch are next to the one https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/434 changes (`extent_bind` for the index buffer): whichever merges second takes both. **Turning it off:** revert the commit. **Compatibility:** Nothing changes: no save, options file, cache or `MKWVK_API_VERSION` change; on GCN 1-2 the draws that were missing now show. ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named). - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported. - [x] Switches documented (docs/development.md; the README for a menu row) and shipped at their recommended value. - [x] Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen. - [x] A file in `docs/tested/` for each new measured run (format in `docs/tested-configurations.md`). - [x] A game-free test added for the fix, failing on `main` and passing here. - [x] Docs updated.
RADV has no 8-bit index buffers before GCN 3 (gfx_level < GFX8: HD 7000, R9 270-390, R7 260-360). Those draws were skipped, and on an R9 290 the title and the game were black with sound. Their indices are now widened to 16 bits on the CPU into the recording's stream, as the quads' are; a restart index stays a restart. RX_VK_INDEX_UINT8=0 reproduces the path on any GPU.

Co-authored-by: Cursor <[email protected]>
Assisted-by: Claude Opus 5.5
docs(tested): the second interleaved pair of the 8-bit index runs
Some checks failed
beanstalk/approval Test farm not requested
PR description / Description follows the template (pull_request_target) Failing after 4s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
6902917ef3
Co-authored-by: Cursor <[email protected]>
Assisted-by: Claude Opus 5.5
Author
Contributor

Screenshots from run 1, RX 9070 XT with RX_VK_INDEX_UINT8=0, at the same presents (360, 2640, 4800, 6960). Top: e072164e + RX_VK_INDEX_UINT8 only, all black (the switch-only run ended before present 6960's shot). Bottom: e072164e + this PR's renderer diff, the intro and then the title over its movie.

top: switch only, black; bottom: this PR's renderer

Screenshots from run 1, RX 9070 XT with `RX_VK_INDEX_UINT8=0`, at the same presents (360, 2640, 4800, 6960). Top: e072164e + `RX_VK_INDEX_UINT8` only, all black (the switch-only run ended before present 6960's shot). Bottom: e072164e + this PR's renderer diff, the intro and then the title over its movie. ![top: switch only, black; bottom: this PR's renderer](https://git.magicbean.dev/attachments/b62f8886-ab17-4776-9be6-6466b7955a62)
Yeetbot90 changed title from WIP: fix(vk): draws with 8-bit indices are drawn on GPUs without 8-bit index buffers (RADV on GCN 1-2) to fix(vk): draws with 8-bit indices are drawn on GPUs without 8-bit index buffers (RADV on GCN 1-2) 2026-11-15 09:58:11 +00:00
Yeetbot90 changed title from fix(vk): draws with 8-bit indices are drawn on GPUs without 8-bit index buffers (RADV on GCN 1-2) to WIP: fix(vk): draws with 8-bit indices are drawn on GPUs without 8-bit index buffers (RADV on GCN 1-2) 2026-11-15 09:58:37 +00:00
Yeetbot90 changed title from WIP: fix(vk): draws with 8-bit indices are drawn on GPUs without 8-bit index buffers (RADV on GCN 1-2) to fix(vk): draws with 8-bit indices are drawn on GPUs without 8-bit index buffers (RADV on GCN 1-2) 2026-11-15 12:08:41 +00:00
Merge branch 'main' into fix/gcn-black-screen
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 4s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
92afaea400
Yeetbot90 force-pushed fix/gcn-black-screen from 92afaea400
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 4s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 4b44f56960
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 4s
Website / Website on Cloudflare (pull_request_target) Has been skipped
2026-11-15 12:18:58 +00:00
Compare
Author
Contributor

Rebased onto main @ aa95d35f (4b44f569), in place of the merge commit 92afaea4, whose tree was identical. The description now follows the new template (#571). After the rebase, tests/run_all.py: 494 passed, 21 failed; the same 21 fail on a clean aa95d35f on this PC (Windows toolchain and environment, none in code this PR touches). The in-game runs are still the ones on e072164e: this PC's game build is at renderer interface 21 and main is at 23, so they weren't repeated; the renderer diff is unchanged by the rebase.

Rebased onto main @ aa95d35f (4b44f569), in place of the merge commit 92afaea4, whose tree was identical. The description now follows the new template (#571). After the rebase, tests/run_all.py: 494 passed, 21 failed; the same 21 fail on a clean aa95d35f on this PC (Windows toolchain and environment, none in code this PR touches). The in-game runs are still the ones on e072164e: this PC's game build is at renderer interface 21 and main is at 23, so they weren't repeated; the renderer diff is unchanged by the rebase.
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 4s
Website / Website on Cloudflare (pull_request_target) Has been skipped
This pull request doesn't have enough approvals yet. 0 of 1 approvals granted.
Some workflows are waiting to be reviewed.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'fix/gcn-black-screen:Yeetbot90-fix/gcn-black-screen'
git switch 'Yeetbot90-fix/gcn-black-screen'
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!541
No description provided.