Skip to content

OpenArena-optimized Vulkan: merge compat + spec_energy + r_classicMod#233

Draft
timfox wants to merge 20 commits into
mainfrom
cursor/evolve-openarena-optimized-d22f
Draft

OpenArena-optimized Vulkan: merge compat + spec_energy + r_classicMod#233
timfox wants to merge 20 commits into
mainfrom
cursor/evolve-openarena-optimized-d22f

Conversation

@timfox
Copy link
Copy Markdown
Owner

@timfox timfox commented Jun 1, 2026

Summary

Consolidates the Q3/OpenArena Vulkan compatibility work and optional spec_energy generative hooks into a single evolution branch, then adds an explicit classic mod preset so the modern renderer stays fast and predictable on QVM-based games like OpenArena without changing gameplay.

Changes

Merged branches

  • Q3/OA Vulkan compat (cursor/fix-vulkan-q3-compat-check-d22f): all-platform Vulkan→OpenGL fallback, swapchain/HDR/lightmap fixes, Tier B devdata, q3_openarena_compat_check, docs and example cfg.
  • Spec-energy + CI gates (cursor/implement-spec-energy-d22f): optional spec_energy_* pipeline (default off), shader determinism and Vulkan feature-gate CTests.

New: classic mod preset

  • r_classicMod (default 0, archived): at Vulkan init, disables heavy features (Forward+, volumetrics, SSAO/bloom/SMAA/SSR, RTX, VDB, veg wind).
  • classic_mod console command: sets r_classicMod 1 and turns off FLUX/TRELLIS/spec_energy client hooks; prompts vid_restart.
  • docs/OPENARENA.md and scripts/run_openarena.sh (OA_BASE, optional CLASSIC_MOD=1).

Validation

  • ./scripts/compile_engine.sh vulkan
  • ./scripts/q3_openarena_compat_check.sh release (21/21)
  • ./scripts/smoke_test.sh release
  • ctest in build-vk-Release (33/33)

Notes

Open in Web Open in Cursor 

cursoragent and others added 20 commits May 28, 2026 21:58
The cs_autoInit guard only matched ri.Cvar_Get, but qcommon uses
Cvar_Get in csharp_debug.c. Accept both patterns and document Vulkan
troubleshooting for classic Quake III / OpenArena installs.

Co-authored-by: Tim Fox <timfox@outlook.com>
- examples/q3_vulkan_compat.cfg for optional classic-mod renderer tuning
- q3_openarena_compat_check registered in CTest (validation;smoke)
- Link example from COMPATIBILITY.md and examples/README.md

Co-authored-by: Tim Fox <timfox@outlook.com>
- Do not ERR_FATAL when swapchain lacks TRANSFER_SRC (r_fbo 0); warn and
  disable screenshot readback instead; only request supported usage flags.
- Rebuild world pipelines when r_lightmap_srgb_decode changes (Q3/OA HDR fix).
- test_vk_vegetation_dispatch_order: use grep instead of rg for portability.
- Extend source guards; fix devdata OPTIONAL_GAME_ASSETS path comment.

Co-authored-by: Tim Fox <timfox@outlook.com>
- VK_SetLightParams: skip legacy r_gamma light scaling when r_fbo/HDR active.
- OpenGL dlight ARB path: same when r_hdr 1/2.
- Expand q3_openarena_compat_check for swapchain, lightmap, and dlight guards.
- Document volumetric fog on alpha geometry; dedupe validate_ci_build q3 run.
- Update HDR_GAPS §6.7 to match implementation.

Co-authored-by: Tim Fox <timfox@outlook.com>
- Add run_renderer_tier_b_devdata.sh (rtest_base map load + asset manifest).
- CTest renderer_regression_maps_devdata; validate_ci_build step 6b.
- production_readiness uses devdata when GAME_BASE unset.
- Auto-select devdata OPTIONAL_GAME_ASSETS when GAME_BASE is rtest_base.

Co-authored-by: Tim Fox <timfox@outlook.com>
- evidence_status.sh: detect shipped rtest_base devdata path.
- bootstrap_ioq3_qvm.sh for rebuilding qagame.qvm when devdata is missing.
- FINDINGS Tier A row for 2026-05-29 automated gate; AGENTS.md ctest note.

Co-authored-by: Tim Fox <timfox@outlook.com>
- docs/Q3_OPENARENA_VULKAN.md consolidates setup, scripts, and tuning.
- CHANGELOG [Unreleased] entries for compat, Tier B, and Vulkan fixes.
- Link from QUICKSTART and COMPATIBILITY.

Co-authored-by: Tim Fox <timfox@outlook.com>
When SDL cannot create a VK_KHR_surface window (headless CI, missing ICD),
fall back to OpenGL before VKimp_Init fatals — Q3/OA and demo shells still start.
ARM-only guard removed; compat check and docs updated.

Co-authored-by: Tim Fox <timfox@outlook.com>
Co-authored-by: Tim Fox <timfox@outlook.com>
Integrate rajabi2001/sega as an external PyTorch generation hook mirroring
FLUX/TRELLIS: async SDL jobs, console commands, and texture hot-reload.

- Vendored upstream flux_sega/ and qwen_sega/ under external/sega/
- scripts/sega_flux_generate.py wrapper copied to release on build
- src/client/cl_sega.c with cvars, sega_generate/status/cancel/view
- Shared cl_pipeline.c/h for shell template expansion (FLUX/TRELLIS/SEGA)
- USE_SEGA CMake option (default ON), docs/SEGA.md, runtime check script
- cl_sega_enable defaults to 0 for classic mod compatibility

Co-authored-by: Tim Fox <timfox@outlook.com>
User-facing commands, cvars, CMake flag, docs, and scripts now use
spec_energy_* / USE_SPEC_ENERGY instead of sega_* / USE_SEGA.

Vendored upstream moved to external/flux_spec_energy/ (upstream
flux_sega/ layout unchanged). GitHub repo URL kept only as upstream
reference in docs.

Co-authored-by: Tim Fox <timfox@outlook.com>
- Add spec_energy_runtime_check to CTest, validate_ci_build, smoke_test
- Fix cs_autoInit compat grep (Cvar_Get vs ri.Cvar_Get)
- Document release wrappers in DEVELOPMENT_SETUP; cross-link TRELLIS.md

Co-authored-by: Tim Fox <timfox@outlook.com>
- Upstream layout validator (flux_sega/, qwen_sega/, requirements.txt)
- spec_energy_runtime_check runs layout check on vendored copy
- COMPATIBILITY.md notes generative hooks default off

Co-authored-by: Tim Fox <timfox@outlook.com>
ASAN and other raw-CMake jobs may not copy release/spec_energy_flux_generate.py.
Skip spec_energy_runtime_check in that case (warn), so smoke_test doesn't fail
unless the wrapper is actually present.

Co-authored-by: Tim Fox <timfox@outlook.com>
- vk_shader_determinism_check: compile_shaders to temp dir and compare to tracked blobs
- vulkan_state_of_art_check: enforce RTX feature gating (Features2), pNext chain use, and extension-list guards
- Wire both into validate_ci_build and CTest

Co-authored-by: Tim Fox <timfox@outlook.com>
Co-authored-by: Tim Fox <timfox@outlook.com>
- Merge cursor/implement-spec-energy-d22f (spec_energy, Vulkan CI gates)
- Add r_classicMod cvar and classic_mod console command
- vk_apply_classic_mod_preset for Q3/OA-safe Vulkan at init
- docs/OPENARENA.md and scripts/run_openarena.sh launcher

Co-authored-by: Tim Fox <timfox@outlook.com>
- classic_mod sets renderer cvars immediately (vid_restart for latch)
- run_openarena.sh: inline boot cvars, CLASSIC_MOD=1, copy cfgs to OA_BASE
- examples/q3_classic_mod.cfg; ship to release/examples/ on build
- pr_ready_summary.sh targets evolution PR #233; compat checks expanded

Co-authored-by: Tim Fox <timfox@outlook.com>
- run_openarena_server.sh for dedicated QVM hosting
- test_run_openarena_script CTest (CLASSIC_MOD, OA_BASE cfg copy)
- check_artifacts validates release/examples/*.cfg
- Fix compat check SIGPIPE with grep process substitution
- cl_flux_enable default-off gate; smoke_test release/examples check

Co-authored-by: Tim Fox <timfox@outlook.com>
- Single script: compat check, launcher test, smoke, Tier B devdata
- RELEASE_CHECKLIST, evidence_status, OPENARENA.md PR merge note
- CHANGELOG and compat check for orchestrator

Co-authored-by: Tim Fox <timfox@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants