diff --git a/port/linux/README.md b/port/linux/README.md index f9c7f35d..d4a47595 100644 --- a/port/linux/README.md +++ b/port/linux/README.md @@ -1140,6 +1140,7 @@ Other changes: | `input/input_abstraction.c`, `game/player_control.c`, `game/players.c`, `game/player_queues_new.c`, `units/units.h` | The keyboard and mouse's actions (`src/xinput_sdl.c`, `include/halo_keyboard.h`) join controller 1's game controls; their reload key reloads on its own, and their action key only acts (a control flag of the port's, sent with the player's action, stops the reload the controller's X falls back to). | | `sound/sound_manager.c`, `interface/hud.c`, `game/game_engine.c` | The music's and the other sounds' volumes; the HUD's and the scoreboard's settings are read again when Settings changes them. | | `rasterizer/xbox/rasterizer_xbox_shadows.c` | With larger shadow maps (`display.shadow_resolution`), the blur's taps stay half a texel apart, and more passes widen it to cover the same part of the map as on the Xbox. | +| `rasterizer/rasterizer.c` | The 128 KB of vertices of the debug display of a model's vertices are static, not on the stack: the compiler inlines the function in `render_model`, and the Windows build probed the stack a page at a time for every model drawn. | | `render/render.c` | The 3D view of each window is antialiased before the HUD is drawn (`display.anti_aliasing`). | | `interface/hud.c` | In multiplayer, players' names are drawn above their heads (`display.player_names`, `display.player_name_scale`). | | `rasterizer/rasterizer_text.c`, `text/draw_string.c` | Text is drawn from an atlas of the fonts' glyphs, rasterized at the resolution the game draws at (`src/text_hires.c`), when the font has every character of the string. Text can be drawn scaled about a point (`rasterizer_text_set_scale`), as the players' names are. Each glyph's advance is centred on the font tag character's, so the layout is the same, and a glyph is cut at a text box only where the font tag's character visibly was. | diff --git a/source/rasterizer/rasterizer.c b/source/rasterizer/rasterizer.c index 68709606..de9e17c3 100644 --- a/source/rasterizer/rasterizer.c +++ b/source/rasterizer/rasterizer.c @@ -1889,7 +1889,11 @@ void rasterizer_debug_model_vertices( short triangle_vertex_index; char model_vertex_string[256]; char triangle_vertex_string[256]; - struct rasterizer_debug_model_vertex debug_vertices[MAXIMUM_RASTERIZER_DEBUG_MODEL_VERTICES]; + /* port: static. render_model calls this for each part it draws, and + the compiler inlines it there: on the stack, the Windows build probed + the 128 KB the debug display rarely uses a page at a time (_chkstk) for + every model drawn */ + static struct rasterizer_debug_model_vertex debug_vertices[MAXIMUM_RASTERIZER_DEBUG_MODEL_VERTICES]; match_assert( "c:\\halo\\SOURCE\\rasterizer\\rasterizer.c",