Skip to content

Vulkan: remove stale compile-time feature flags and dead branches - #300

Draft
cursor[bot] wants to merge 4 commits into
mainfrom
cursor/feature-flag-cleanup-9606
Draft

Vulkan: remove stale compile-time feature flags and dead branches#300
cursor[bot] wants to merge 4 commits into
mainfrom
cursor/feature-flag-cleanup-9606

Conversation

@cursor

@cursor cursor Bot commented Aug 11, 2026

Copy link
Copy Markdown

Summary

Scheduled feature-flag cleanup: removes compile-time guards and dead branches that are permanently on (or never defined) in the Vulkan renderer, preserving the active code path with no behavior change.

Flags removed

Flag / pattern Why safe to delete
USE_VBO_GRID Never defined in tr_local.h; grid surfaces intentionally stay off the static VBO path
USE_TESS_NEEDS_NORMAL / USE_TESS_NEEDS_ST2 Commented out and never enabled
USE_PMLIGHT Never defined; shadow code always used lightDir
USE_VBO, USE_FOG_COLLAPSE, USE_VK_PBR, USE_VULKAN Permanently #defined for the Vulkan renderer (tr_local.h / CMake)
VK_CUBEMAP, VK_PBR_BRDFLUT Always defined alongside USE_VK_PBR
Dead #else branches for USE_VK_PBR Non-PBR shader path removed; PBR is the only path
Dead OpenGL #ifndef USE_VULKAN stubs in tr_backend.c OpenGL renderer removed; Vulkan-only backend
Obsolete #if 1 in tr_shader.c / tr_curve.c Unconditional code wrapped in no-op preprocessor guards

Tooling / regression guards

  • scripts/tools/unwrap_compile_flags.py — repeatable unwrap for always-on macros
  • scripts/tools/unwrap_use_vk_pbr.py — targeted PBR else-branch removal
  • tests/scripts/test_stale_compile_flags.sh — blocks reintroduction of removed guards + orphan #endif scan
  • Wired test_stale_compile_flags.sh into scripts/smoke_test.sh

Behavioral parity checks

  • tests/scripts/test_stale_compile_flags.sh
  • tests/scripts/test_vulkan_regression_source_guards.sh
  • tests/scripts/test_cpp20_sources.sh

Deferred (low confidence — not touched)

  • Runtime cvars (r_forwardPlus, experimental r_* toggles) — still user-facing
  • USE_VULKAN_RTX, USE_EXPERIMENTAL_RENDERERS — optional CMake gates with real OFF paths
  • GLSL -DUSE_VK_PBR shader variants — build-time shader matrix, not dead

Test plan

  • tests/scripts/test_stale_compile_flags.sh
  • tests/scripts/test_vulkan_regression_source_guards.sh
  • tests/scripts/test_cpp20_sources.sh
  • ./scripts/compile_engine.sh vulkan (full build — recommended before merge)
  • ./scripts/smoke_test.sh ./release after build
Open in Web View Automation 

cursoragent and others added 4 commits August 11, 2026 10:05
- USE_VBO_GRID: never defined (SF_GRID deliberately off VBO path per tr_local.h);
  remove dead grid VBO estimate/queue/pack paths in vk_vbo.c and tr_surface.c.
- USE_TESS_NEEDS_NORMAL / USE_TESS_NEEDS_ST2: commented-out defines with no
  struct fields; remove preprocessor guards that only wrapped always-on paths.
- USE_VK_PBR dead #else: unwrap non-PBR shader module init/destroy fallbacks in
  vk_shader_modules.c and vk_shutdown.c; flatten VK_CUBEMAP/VK_PBR_BRDFLUT nesting
  in tr_local.h; unwrap reactive/object-id storage descriptor (void)0 else stubs.
- USE_DEDICATED_ALLOCATION: always defined in vk.h; drop redundant #ifndef override
  in vk_instance.c.

Behavior unchanged on the active PBR/VBO/dedicated-allocation paths.

Co-authored-by: Tim Fox <timfox@outlook.com>
USE_VK_PBR is unconditionally defined in tr_local.h for the Vulkan
renderer. Remove non-PBR #else fallbacks in pipeline creation, vertex
layout, descriptor counts, and BSP/surface helpers while keeping shader
templates and runtime vk.pbrActive gating intact.

Adds scripts/tools/unwrap_use_vk_pbr.py for future cleanups.

Co-authored-by: Tim Fox <timfox@outlook.com>
Extend feature-flag cleanup beyond dead branches (USE_VBO_GRID,
USE_TESS_NEEDS_*) by unwrapping compile-time guards for macros that
are permanently defined in the Vulkan renderer:

- USE_VBO, USE_FOG_COLLAPSE, USE_VK_PBR, USE_VULKAN
- VK_CUBEMAP, VK_PBR_BRDFLUT

Adds scripts/tools/unwrap_compile_flags.py for repeatable unwrapping
and tests/scripts/test_stale_compile_flags.sh to block reintroduction
of removed guards and orphan #endif regressions.

Fixes stray preprocessor artifacts in vk_object_id.c and tr_shade.c
left after guard removal.

Co-authored-by: Tim Fox <timfox@outlook.com>
- USE_PMLIGHT was never defined; shadow paths always used lightDir
- Unwrap always-on #if 1 tessellation/stage optimization blocks
- Extend test_stale_compile_flags.sh to block reintroduced always-on guards
- Wire stale compile-flag test into smoke_test.sh

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.

1 participant