Skip to content

Inefficient IPC calls #3157

@VReaperV

Description

@VReaperV

I plan on making the amount of IPC calls largely static for 0.56, as right now their amount can often cripple performance. This issue is to keep track of such calls.

IPC call Usage Solution Status
trap_CM_MarkFragments() Unused now that fragments are batched Remove. Done: DaemonEngine/Daemon#1428
trap_GetEntityToken() Unused Remove. Done: DaemonEngine/Daemon#1428
trap_QuoteString() Unused Remove. Done: DaemonEngine/Daemon#1428
trap_R_GetShaderNameFromHandle() Done for every beacon and a bunch of RMLUI elements every frame Stop using it: no handle->name->handle round trips. Done: #3347
trap_R_RegisterModel() Done for each model. Affects loading time? N/A N/A
trap_R_RegisterSkin() Done for each skin. Affects loading time? N/A N/A
trap_R_RegisterShader() Done for each shader. Affects loading time? N/A N/A
trap_R_AddRefEntityToScene() Done for each visible entity, sometimes more than once (e. g. for players/bots, for head, torso, legs, jetpack, radar, weapon etc.) Already an async call, but does a lot of copies of the heavy refSkeleton_t struct. Also, maybe make refEntity_t persistent between frames (this would also help with caching shadowmaps, since engine would then know if an entity hasn't moved within a light source's frustum)? Done: DaemonEngine/Daemon#1489
trap_R_ModelBounds() Only used when loading models. Increases loading time? N/A N/A
trap_R_LerpTag() Used for potentially visible weapons/attachments Move to the engine. Done: DaemonEngine/Daemon#1489
trap_R_GetTextureSize() Done once on load. Increases loading time? N/A N/A
trap_R_GenerateTexture() Same as above N/A N/A
trap_GetUserCmd() See #2660 N/A N/A
trap_R_RemapShader() Only done when loading or if some shader changed (?). Increases loading time? N/A N/A
trap_R_inPVS() Unused now that it's batched Remove. Done: DaemonEngine/Daemon#1428
trap_R_inPVVS() Unused Remove, evaluate engine-side usefulness to determine affected surfaces for shadowmapping. Done: DaemonEngine/Daemon#1428
trap_R_LightForPoint() Used for "inverse shadow mapping" (wtf is that even supposed to mean?)? Also used for particles and trails with realLight parm (do we even use that anywhere?). Looks like this is some hack to create entity shadows on the absence of light source definitions? For some reason uses lightgrid, although also claims it fails without lightmaps... Remove, use actual lights for shadowmapping (also see DaemonEngine/Daemon#1298) realLight: Done: DaemonEngine/Daemon#1523; shadowCaster: Removed #3475 DaemonEngine/Daemon#1910
trap_R_RegisterAnimation() Only done when loading animations. Increases loading time? N/A N/A
trap_R_BuildSkeleton() Used twice for all potentially visible buildings, more for players and bots. Together with trap_R_AddRefEntity() involves a lot of copies of the heavy refSkeleton_t struct. Move to engine, only send the lerp parameters etc with refEntity_t. Remove refSkeleton_t from refEntity_t definition. Also see DaemonEngine/Daemon#1386 (comment). Done: DaemonEngine/Daemon#1489
trap_R_BoneIndex() Used for potentially visible weapons/attachments Do one IPC call after loading models/animations to get the required info, move the code to process it to cgame. Done: #3402
trap_R_AnimNumFrames() Only done when loading animations. Increases loading time? Evaluate whether we really need this.
trap_R_AnimFrameRate() Only done when loading animations. Increases loading time? Evaluate whether we really need this.
trap_RegisterVisTest() Only used for Wolf:ET flares Do we really need this? N/A
trap_AddVisTestToScene() Only used for Wolf:ET flares Do we really need this? N/A
trap_CheckVisibility() Only used for Wolf:ET flares Do we really need this? N/A

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions