Mon Oct 17, 2016 10:58 am
I noticed a big performance regression with zdoom compiled with GCC 6 in release mode. When I load Ancient Aliens map29, just the starting area is so slow that each frame is separated by around 1 sec and half, while with GCC 5 and less the frame rate is more or less 15 fps. It's even slower than debug mode. I hope somebody can help with the real issue (could be a compiler regression, indeed!). Using Ubuntu 16.04 x86_64.
Tue Oct 18, 2016 4:07 pm
I can confirm it on Arch here. My entire system slowed down to a stuttery mess while the map loaded, and afterwards I was getting about 2 seconds per frame on average. ZDoom 2.9pre-1443-gd2a9f7a and GCC 6.2.1, for the reference.
Tue Oct 18, 2016 9:00 pm
If either of you have time, what you should probably do is record a demo, enable profiling and build with both GCC 6 and GCC 5. Playing back the demo and looking at the profiler results should theoretically show a change in hotspots which could narrow down what changed. At least assuming the change is some fairly localized thing.
Sun Oct 30, 2016 3:06 pm
I made the profile of both, I can show the flat profile for the top functions with at least 0.01% of profile time:
GCC5:
Spoiler:Code: Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 22.29 7.39 7.39 184136 0.00 0.00 R_DrawSprite(vissprite_t*) 10.33 10.82 3.43 5054238 0.00 0.00 R_FindPlane(secplane_t const&, FTextureID, int, double, bool, FTransform const&, int, FSectorPortal*) 8.07 13.49 2.68 6064239 0.00 0.00 R_RenderMaskedSegRange(drawseg_t*, int, int) 4.49 14.98 1.49 18658617 0.00 0.00 OWallMost(short*, double, FWallCoords const*) 4.49 16.47 1.49 2703456 0.00 0.00 R_Subsector(subsector_t*) 3.65 17.68 1.21 14467572 0.00 0.00 R_AddLine(seg_t*) 3.63 18.89 1.21 11591922 0.00 0.00 R_FakeFlat(sector_t*, sector_t*, int*, int*, bool) 3.62 20.09 1.20 814212 0.00 0.00 R_DrawSingleSkyCol4(unsigned int, unsigned int) 3.00 21.08 1.00 26616384 0.00 0.00 BlastMaskedColumn(FTexture*, bool) [clone .constprop.38] 2.58 21.94 0.86 28545324 0.00 0.00 R_DrawMaskedColumn(unsigned char const*, FTexture::Span const*, bool) 2.11 22.64 0.70 2340576 0.00 0.00 R_StoreWallRange(int, int) 1.96 23.29 0.65 2139291 0.00 0.00 R_NewWall(bool) 1.87 23.91 0.62 567 0.00 0.02 R_RenderBSPNode(void*) 1.42 24.38 0.47 32261010 0.00 0.00 FPatchTexture::GetColumn(unsigned int, FTexture::Span const**) 1.24 24.79 0.41 666 0.00 0.00 Convert32(unsigned char*, int, void*, int, int, int, int, int, int, int) 1.15 25.17 0.38 31810104 0.00 0.00 FMultiPatchTexture::GetColumn(unsigned int, FTexture::Span const**) 1.13 25.54 0.38 3802510 0.00 0.00 R_DrawColumnHorizP_C() 1.13 25.92 0.38 2340576 0.00 0.00 R_RenderSegLoop() 1.00 26.25 0.33 15503913 0.00 0.00 sector_t::GetHeightSec() const 0.97 26.57 0.32 1548577 0.00 0.00 AActor::Tick() 0.87 26.86 0.29 7351722 0.00 0.00 FWallCoords::Init(TVector2<double> const&, TVector2<double> const&, double) 0.84 27.14 0.28 3264993 0.00 0.00 rt_draw4cols(int) 0.78 27.40 0.26 2139291 0.00 0.00 PrepWall(float*, int*, double, int, int) 0.77 27.65 0.26 6384470 0.00 0.00 R_SetPatchStyle(FRenderStyle, int, int, unsigned int) 0.72 27.89 0.24 649215 0.00 0.00 rt_add4cols_c 0.60 28.09 0.20 1559310 0.00 0.00 FThinkerIterator::Next() 0.57 28.28 0.19 285131 0.00 0.00 rt_map4cols_c 0.56 28.47 0.19 2599128 0.00 0.00 R_CheckPlane(visplane_s*, int, int) 0.54 28.65 0.18 567 0.00 0.03 R_DrawMasked() 0.54 28.83 0.18 147987 0.00 0.00 vlinec4() 0.51 29.00 0.17 5772960 0.00 0.00 DWallScrollInterpolation::UpdateInterpolation() 0.51 29.17 0.17 93555 0.00 0.00 R_MapVisPlane(visplane_s*, void (*)(int, int)) 0.50 29.33 0.17 184842 0.00 0.00 R_ProjectSprite(AActor*, int, F3DFloor*, F3DFloor*) 0.48 29.49 0.16 75411 0.00 0.00 R_DrawSkyPlane(visplane_s*) 0.45 29.64 0.15 1902852 0.00 0.00 R_DrawSkyStriped(visplane_s*) 0.41 29.78 0.14 2139291 0.00 0.00 PrepWallRoundFix(int*, int, int, int) 0.39 29.91 0.13 1088640 0.00 0.00 R_DrawSingleSkyCol1(unsigned int, unsigned int) 0.39 30.04 0.13 7149109 0.00 0.00 NetUpdate() 0.33 30.15 0.11 350496 0.00 0.00 DThinker::TickThinkers(FThinkerList*, FThinkerList*) 0.33 30.26 0.11 590247 0.00 0.00 wallscan(int, int, short*, short*, float*, int*, double, unsigned char const* (*)(FTexture*, int)) 0.30 30.36 0.10 6530139 0.00 0.00 WallMost(short*, secplane_t const&, FWallCoords const*) 0.29 30.45 0.10 5971077 0.00 0.00 R_NewOpening(long) 0.26 30.54 0.09 667 0.00 0.00 I_WaitForTicSignaled(int) 0.26 30.62 0.09 I_HandleAlarm(int) 0.24 30.70 0.08 1971744 0.00 0.00 DScroller::Tick() 0.24 30.78 0.08 168966 0.00 0.00 R_DrawNormalPlane(visplane_s*, double, double, int, bool, bool) 0.21 30.85 0.07 567 0.00 0.03 R_DrawMaskedSingle(bool) 0.21 30.92 0.07 2854845 0.00 0.00 R_ClipWallSegment(int, int, bool) 0.21 30.99 0.07 1358068 0.00 0.00 R_DrawColumnP_C() 0.18 31.05 0.06 12255885 0.00 0.00 FTextureManager::PalCheck(FTextureID) 0.18 31.11 0.06 1548577 0.00 0.00 AActor::CheckPortalTransition(bool) 0.18 31.17 0.06 799680 0.00 0.00 FScanner::ScanString(bool) 0.18 31.23 0.06 47496 0.00 0.00 BestColor(unsigned int const*, int, int, int, int, int) 0.18 31.29 0.06 FMultiPatchTexture::GetPixels() 0.17 31.35 0.06 2703456 0.00 0.00 R_AddSprites(sector_t*, int, int) 0.15 31.40 0.05 7152269 0.00 0.00 I_GetTimeSignaled(bool) 0.15 31.45 0.05 5406912 0.00 0.00 sector_t::ValidatePortal(int) 0.15 31.50 0.05 3178602 0.00 0.00 side_t::GetLightLevel(bool, int, bool, int*) const 0.15 31.55 0.05 1842183 0.00 0.00 R_SkyboxCompare(sector_t*, sector_t*) 0.15 31.60 0.05 1548577 0.00 0.00 P_XYMovement(AActor*, TVector2<double>) 0.15 31.65 0.05 1824 0.00 0.00 FInterpolator::UpdateInterpolations() 0.15 31.70 0.05 567 0.00 0.00 R_DrawPlanes() 0.14 31.74 0.05 3264993 0.00 0.00 rt_initcols(unsigned char*) 0.12 31.78 0.04 7147394 0.00 0.00 HGetPacket() 0.12 31.82 0.04 7147295 0.00 0.00 GetPackets() 0.12 31.86 0.04 3805704 0.00 0.00 FTexture::GetSkyCapColor(bool) 0.12 31.90 0.04 1125115 0.00 0.00 sv_compare(vissprite_t*, vissprite_t*) 0.12 31.94 0.04 732084 0.00 0.00 FBlockLinesIterator::Next() 0.12 31.98 0.04 485185 0.00 0.00 AInventory::Tick() 0.12 32.02 0.04 206388 0.00 0.00 new_visplane(unsigned int) 0.12 32.06 0.04 159327 0.00 0.00 R_DrawAddColumnP_C() 0.12 32.10 0.04 7506 0.00 0.00 FPatchTexture::~FPatchTexture() 0.12 32.14 0.04 666 0.00 0.00 FTextureManager::UpdateAnimations(unsigned int) 0.12 32.18 0.04 1 0.04 0.06 P_LoadGLZSegs(FileReaderBase&, int) 0.09 32.21 0.03 824412 0.00 0.00 FileReaderZ::Read(void*, long) 0.09 32.24 0.03 42507 0.00 0.00 FIWadManager::CheckLumpName(char const*) 0.09 32.27 0.03 670 0.00 0.00 FTexture::CreateSpans(unsigned char const*) const 0.09 32.30 0.03 2 0.02 0.02 P_LoopSidedefs(bool) 0.09 32.33 0.03 2 0.02 0.02 FTextureManager::AddTexturesLump(void const*, int, int, int, int, bool) 0.08 32.36 0.03 5040063 0.00 0.00 secplane_t::operator!=(secplane_t const&) const 0.06 32.38 0.02 2704023 0.00 0.00 sector_t::GetCeilingLight() const 0.06 32.40 0.02 1348893 0.00 0.00 FWallTmapVals::InitFromLine(TVector2<double> const&, TVector2<double> const&) 0.06 32.42 0.02 1081269 0.00 0.00 rt_add1col 0.06 32.44 0.02 855456 0.00 0.00 P_FindFloorPlane(sector_t*, TVector3<double> const&) 0.06 32.46 0.02 396738 0.00 0.00 c_atan2 0.06 32.48 0.02 184703 0.00 0.00 R_DrawVisSprite(vissprite_t*) 0.06 32.50 0.02 184275 0.00 0.00 AActor::IsVisibleToPlayer() const 0.06 32.52 0.02 135528 0.00 0.00 DCanvas::DrawTextureParms(FTexture*, DrawParms&) 0.06 32.54 0.02 77142 0.00 0.00 MD5Transform(unsigned int*, unsigned int const*) 0.06 32.56 0.02 13453 0.00 0.00 R_PointInSubsector(int, int) 0.06 32.58 0.02 7435 0.00 0.00 StringFormat::VWorker(int (*)(void*, char const*, int), void*, char const*, __va_list_tag*) 0.06 32.60 0.02 567 0.00 0.00 R_ClearPlanes(bool) 0.06 32.62 0.02 339 0.00 0.00 V_GetColorStringByName(char const*) 0.03 32.63 0.01 6384470 0.00 0.00 FRenderStyle::CheckFuzz() 0.03 32.64 0.01 2704023 0.00 0.00 sector_t::GetFloorLight() const 0.03 32.65 0.01 1902852 0.00 0.00 R_DrawSkyColumn(int, int, int, int) 0.03 32.66 0.01 1559488 0.00 0.00 AActor::UpdateRenderSectorList() 0.03 32.67 0.01 1549432 0.00 0.00 AActor::UpdateWaterLevel(bool) 0.03 32.68 0.01 1548577 0.00 0.00 AActor::Crash() 0.03 32.69 0.01 1429979 0.00 0.00 P_AddPortalnode(FLinePortal*, AActor*, portnode_t*) 0.03 32.70 0.01 1296553 0.00 0.00 G_SkillProperty(ESkillProperty) 0.03 32.71 0.01 1024464 0.00 0.00 FFontChar2::GetColumn(unsigned int, FTexture::Span const**) 0.03 32.72 0.01 327670 0.00 0.00 p1evl 0.03 32.73 0.01 184275 0.00 0.00 FRenderStyle::IsVisible(double) const 0.03 32.74 0.01 149568 0.00 0.00 DGlow::Tick() 0.03 32.75 0.01 148271 0.00 0.00 M_Free(void*) 0.03 32.76 0.01 140325 0.00 0.00 FConsoleAlias::~FConsoleAlias() 0.03 32.77 0.01 131911 0.00 0.00 FFont::GetChar(int, int*) const 0.03 32.78 0.01 108413 0.00 0.00 AActor::SetState(FState*, bool) 0.03 32.79 0.01 96154 0.00 0.00 uppercopy(char*, char const*) 0.03 32.80 0.01 56128 0.00 0.00 c_sqrt 0.03 32.81 0.01 46247 0.00 0.00 P_CollectConnectedGroups(int, TVector3<double> const&, double, double, FPortalGroupArray&) 0.03 32.82 0.01 44683 0.00 0.00 P_PointInSubsector(double, double) 0.03 32.83 0.01 43255 0.00 0.00 FPathTraverse::AddLineIntercepts(int, int) 0.03 32.84 0.01 23286 0.00 0.00 P_TranslateLineDef(line_t*, maplinedef_t*, int) 0.03 32.85 0.01 21888 0.00 0.00 DSectorScrollInterpolation::UpdateInterpolation() 0.03 32.86 0.01 19281 0.00 0.00 FScanner::MustGetAnyToken() 0.03 32.87 0.01 11676 0.00 0.00 P_CreateSecNodeList(AActor*) 0.03 32.88 0.01 10901 0.00 0.00 DDropItem::InPlaceConstructor(void*) 0.03 32.89 0.01 7299 0.00 0.00 CommandDrawNumber::Tick(SBarInfoMainBlock const*, DSBarInfo const*, bool) 0.03 32.90 0.01 4059 0.00 0.00 DCanvas::DrawText(FFont*, int, int, int, char const*, int, ...) 0.03 32.91 0.01 2035 0.00 0.00 FString::AllocBuffer(unsigned long) 0.03 32.92 0.01 1925 0.00 0.00 Net_NewMakeTic() 0.03 32.93 0.01 1825 0.00 0.00 CommandUsesAmmo::Tick(SBarInfoMainBlock const*, DSBarInfo const*, bool) 0.03 32.94 0.01 1824 0.00 0.00 P_RunEffects() 0.03 32.95 0.01 1824 0.00 0.00 P_Ticker() 0.03 32.96 0.01 1824 0.00 0.00 AM_Ticker() 0.03 32.97 0.01 1824 0.00 0.00 DSBarInfo::Tick() 0.03 32.98 0.01 622 0.00 0.00 FPatchTexture::MakeTexture() 0.03 32.99 0.01 65 0.00 0.00 FRemapTable::MakeIdentity() 0.03 33.00 0.01 15 0.00 0.00 FIWadManager::ScanIWAD(char const*) 0.03 33.01 0.01 1 0.01 0.03 LoadActors() 0.03 33.02 0.01 1 0.01 0.21 P_SetupLevel(char const*, int) 0.03 33.03 0.01 1 0.01 0.01 I_GetGogPaths() 0.03 33.04 0.01 1 0.01 0.01 P_LoadSectors(MapData*, TMap<FString, FMissingCount, THashTraits<FString>, TValueTraits<FMissingCount> >&) 0.03 33.05 0.01 1 0.01 0.01 P_LoadSideDefs2(MapData*, TMap<FString, FMissingCount, THashTraits<FString>, TValueTraits<FMissingCount> >&) 0.03 33.06 0.01 1 0.01 0.01 P_SpawnScrollers() 0.03 33.07 0.01 1 0.01 0.01 P_SetRenderSector() 0.03 33.08 0.01 1 0.01 0.06 V_Init(bool) 0.03 33.09 0.01 1 0.01 0.01 FTextureManager::FixAnimations() 0.03 33.10 0.01 R_RenderFakeWallRange(drawseg_t*, int, int) 0.03 33.11 0.01 FFontChar1::GetPixels() 0.03 33.12 0.01 FThinkerIterator::Reinit() 0.03 33.13 0.01 APowerInfiniteAmmo::InPlaceConstructor(void*) 0.02 33.13 0.01 6384470 0.00 0.00 R_FinishSetPatchStyle() 0.02 33.14 0.01 2340576 0.00 0.00 R_CheckDrawSegs() 0.02 33.14 0.01 184136 0.00 0.00 R_NewVisSprite() 0.02 33.15 0.01 13248 0.00 0.00 P_ActivateLine(line_t*, AActor*, int, int, TVector3<double>*) 0.02 33.15 0.01 13248 0.00 0.00 P_TestActivateLine(line_t*, AActor*, int, int, TVector3<double>*) 0.02 33.16 0.01 567 0.00 0.00 R_ClearClipSegs(short, short) 0.02 33.16 0.01 TArray<PortalDrawseg, PortalDrawseg>::~TArray()
GCC6:
Spoiler:Code: Flat profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 91.19 91.70 91.70 962712 0.00 0.00 R_FindPlane(secplane_t const&, FTextureID, int, double, bool, FTransform const&, int, FSectorPortal*) 1.49 93.20 1.50 35072 0.00 0.00 R_DrawSprite(vissprite_t*) 0.50 93.70 0.50 514944 0.00 0.00 R_Subsector(subsector_t*) 0.38 94.09 0.39 2755728 0.00 0.00 R_AddLine(seg_t*) 0.37 94.46 0.37 1155020 0.00 0.00 R_RenderMaskedSegRange(drawseg_t*, int, int) 0.31 94.77 0.31 1548577 0.00 0.00 AActor::Tick() 0.30 95.07 0.31 2207912 0.00 0.00 R_FakeFlat(sector_t*, sector_t*, int*, int*, bool) 0.27 95.35 0.28 3553876 0.00 0.00 OWallMost(short*, double, FWallCoords const*) 0.24 95.59 0.24 147636 0.00 0.00 R_DrawSingleSkyCol4(unsigned int, unsigned int) 0.23 95.82 0.24 108 0.00 0.87 R_RenderBSPNode(void*) 0.20 96.02 0.20 445824 0.00 0.00 R_StoreWallRange(int, int) 0.18 96.20 0.18 5884300 0.00 0.00 R_DrawMaskedColumn(unsigned char const*, FTexture::Span const*, bool) 0.17 96.38 0.18 5069292 0.00 0.00 BlastMaskedColumn(FTexture*, bool) 0.17 96.55 0.17 407484 0.00 0.00 R_NewWall(bool) 0.17 96.72 0.17 1558851 0.00 0.00 FThinkerIterator::Next() 0.13 96.85 0.13 167 0.00 0.00 Convert32(unsigned char*, int, void*, int, int, int, int, int, int, int) 0.13 96.98 0.13 5772960 0.00 0.00 DWallScrollInterpolation::UpdateInterpolation() 0.12 97.10 0.12 4238462 0.00 0.00 sector_t::GetHeightSec() const 0.11 97.21 0.11 167606 0.00 0.00 R_DrawSkyPlane(visplane_s*) 0.11 97.32 0.11 1971744 0.00 0.00 DScroller::Tick() 0.09 97.41 0.09 6168640 0.00 0.00 FPatchTexture::GetColumn(unsigned int, FTexture::Span const**) 0.09 97.50 0.09 350496 0.00 0.00 DThinker::TickThinkers(FThinkerList*, FThinkerList*) 0.09 97.59 0.09 168 0.00 0.00 I_WaitForTicSignaled(int) 0.09 97.68 0.09 108 0.00 0.01 R_DrawPlanes() 0.09 97.77 0.09 I_HandleAlarm(int) 0.08 97.85 0.08 445824 0.00 0.00 R_RenderSegLoop() 0.08 97.93 0.08 1548577 0.00 0.00 AActor::CheckPortalTransition(bool) 0.08 98.01 0.08 756242 0.00 0.00 R_DrawColumnHorizP_C() 0.08 98.09 0.08 407484 0.00 0.00 PrepWall(float*, int*, double, int, int) 0.08 98.17 0.08 108 0.00 0.00 R_ClearPlanes(bool) 0.07 98.24 0.08 556635 0.00 0.00 new_visplane(unsigned int) 0.07 98.31 0.07 6049716 0.00 0.00 FMultiPatchTexture::GetColumn(unsigned int, FTexture::Span const**) 0.07 98.38 0.07 799680 0.00 0.00 FScanner::ScanString(bool) 0.07 98.45 0.07 629944 0.00 0.00 rt_draw4cols(int) 0.07 98.52 0.07 62297 0.00 0.00 rt_map4cols_c 0.07 98.59 0.07 1029888 0.00 0.00 sector_t::ValidatePortal(int) 0.07 98.66 0.07 228312 0.00 0.00 R_DrawSingleSkyCol1(unsigned int, unsigned int) 0.06 98.72 0.06 1548577 0.00 0.00 P_XYMovement(AActor*, TVector2<double>) 0.06 98.78 0.06 1400328 0.00 0.00 FWallCoords::Init(TVector2<double> const&, TVector2<double> const&, double) 0.06 98.84 0.06 1267992 0.00 0.00 R_SetPatchStyle(FRenderStyle, int, int, unsigned int) 0.06 98.90 0.06 855456 0.00 0.00 P_FindFloorPlane(sector_t*, TVector3<double> const&) 0.06 98.96 0.06 47496 0.00 0.00 BestColor(unsigned int const*, int, int, int, int, int) 0.05 99.01 0.05 123660 0.00 0.00 rt_add4cols_c 0.05 99.06 0.05 42507 0.00 0.00 FIWadManager::CheckLumpName(char const*) 0.05 99.11 0.05 35208 0.00 0.00 R_ProjectSprite(AActor*, int, F3DFloor*, F3DFloor*) 0.05 99.16 0.05 1824 0.00 0.00 FInterpolator::UpdateInterpolations() 0.05 99.21 0.05 2 0.03 0.03 FTextureManager::AddTexturesLump(void const*, int, int, int, int, bool) 0.04 99.25 0.04 1568449 0.00 0.00 NetUpdate() 0.04 99.29 0.04 1564845 0.00 0.00 HGetPacket() 0.04 99.33 0.04 1549432 0.00 0.00 AActor::UpdateWaterLevel(bool) 0.04 99.37 0.04 605448 0.00 0.00 side_t::GetLightLevel(bool, int, bool, int*) const 0.04 99.41 0.04 485185 0.00 0.00 AInventory::Tick() 0.04 99.45 0.04 44683 0.00 0.00 P_PointInSubsector(double, double) 0.04 99.49 0.04 12076 0.00 0.00 R_PointInSubsector(int, int) 0.03 99.52 0.03 824412 0.00 0.00 FileReaderZ::Read(void*, long) 0.03 99.55 0.03 112428 0.00 0.00 wallscan(int, int, short*, short*, float*, int*, double, unsigned char const* (*)(FTexture*, int)) 0.03 99.58 0.03 77792 0.00 0.00 DCanvas::DrawTextureParms(FTexture*, DrawParms&) 0.02 99.61 0.03 1243836 0.00 0.00 WallMost(short*, secplane_t const&, FWallCoords const*) 0.02 99.63 0.02 2487628 0.00 0.00 FTextureManager::PalCheck(FTextureID) 0.02 99.65 0.02 1296553 0.00 0.00 G_SkillProperty(ESkillProperty) 0.02 99.67 0.02 751896 0.00 0.00 FTexture::GetSkyCapColor(bool) 0.02 99.69 0.02 703424 0.00 0.00 FWadLump::Read(void*, long) 0.02 99.71 0.02 633688 0.00 0.00 R_DrawColumnP_C() 0.02 99.73 0.02 375948 0.00 0.00 R_DrawSkyStriped(visplane_s*) 0.02 99.75 0.02 185426 0.00 0.00 R_DrawNormalPlane(visplane_s*, double, double, int, bool, bool) 0.02 99.77 0.02 140325 0.00 0.00 FConsoleAlias::~FConsoleAlias() 0.02 99.79 0.02 77142 0.00 0.00 MD5Transform(unsigned int*, unsigned int const*) 0.02 99.81 0.02 56128 0.00 0.00 c_sqrt 0.02 99.83 0.02 46045 0.00 0.00 FindRefPoint(line_t*, TVector2<double> const&) 0.02 99.85 0.02 33744 0.00 0.00 P_CheckPosition(AActor*, TVector2<double> const&, FCheckPosition&, bool) 0.02 99.87 0.02 33744 0.00 0.00 P_TryMove(AActor*, TVector2<double> const&, int, secplane_t const*, FCheckPosition&, bool) 0.02 99.89 0.02 28188 0.00 0.00 vlinec4() 0.02 99.91 0.02 7506 0.00 0.00 FPatchTexture::~FPatchTexture() 0.02 99.93 0.02 3983 0.00 0.00 DCanvas::ParseDrawTextureTags(FTexture*, double, double, unsigned int, __va_list_tag*, DrawParms*, bool) const 0.02 99.95 0.02 622 0.00 0.00 FPatchTexture::MakeTexture() 0.02 99.97 0.02 339 0.00 0.00 V_GetColorStringByName(char const*) 0.02 99.99 0.02 167 0.00 0.00 C_DrawConsole(bool) 0.02 100.01 0.02 2 0.01 0.01 P_LoopSidedefs(bool) 0.02 100.03 0.02 FMultiPatchTexture::GetPixels() 0.01 100.04 0.01 1570622 0.00 0.00 I_GetTimeSignaled(bool) 0.01 100.05 0.01 1559488 0.00 0.00 AActor::UpdateRenderSectorList() 0.01 100.06 0.01 1548577 0.00 0.00 AActor::Crash() 0.01 100.07 0.01 1429979 0.00 0.00 P_AddPortalnode(FLinePortal*, AActor*, portnode_t*) 0.01 100.08 0.01 610632 0.00 0.00 FFontChar2::GetColumn(unsigned int, FTexture::Span const**) 0.01 100.09 0.01 543780 0.00 0.00 R_ClipWallSegment(int, int, bool) 0.01 100.10 0.01 514944 0.00 0.00 R_AddSprites(sector_t*, int, int) 0.01 100.11 0.01 445824 0.00 0.00 R_CheckDrawSegs() 0.01 100.12 0.01 350892 0.00 0.00 R_SkyboxCompare(sector_t*, sector_t*) 0.01 100.13 0.01 205956 0.00 0.00 rt_add1col 0.01 100.14 0.01 195937 0.00 0.00 c_atan 0.01 100.15 0.01 161568 0.00 0.00 R_GetColumn(FTexture*, int) 0.01 100.16 0.01 153836 0.00 0.00 FScanner::MustGetStringName(char const*) 0.01 100.17 0.01 142188 0.00 0.00 M_Malloc(unsigned long) 0.01 100.18 0.01 131040 0.00 0.00 GC::Mark(DObject**) 0.01 100.19 0.01 117703 0.00 0.00 sector_t::GetTerrain(int) const 0.01 100.20 0.01 108413 0.00 0.00 AActor::SetState(FState*, bool) 0.01 100.21 0.01 103179 0.00 0.00 FBlockLinesIterator::StartBlock(int, int) 0.01 100.22 0.01 79768 0.00 0.00 FBoundingBox::AddToBox(TVector2<double> const&) 0.01 100.23 0.01 48448 0.00 0.00 FString::FString(char const*) 0.01 100.24 0.01 44015 0.00 0.00 FStringTable::ProcessEscapes(char*) 0.01 100.25 0.01 37659 0.00 0.00 FSlide::SlideTraverse(TVector2<double> const&, TVector2<double> const&) 0.01 100.26 0.01 35180 0.00 0.00 R_DrawVisSprite(vissprite_t*) 0.01 100.27 0.01 35072 0.00 0.00 R_NewVisSprite() 0.01 100.28 0.01 23286 0.00 0.00 P_AdjustLine(line_t*) 0.01 100.29 0.01 17820 0.00 0.00 R_MapVisPlane(visplane_s*, void (*)(int, int)) 0.01 100.30 0.01 11752 0.00 0.00 AActor::LinkToWorld(bool, sector_t*) 0.01 100.31 0.01 10901 0.00 0.00 PlayerLandedOnThing(AActor*, AActor*) 0.01 100.32 0.01 10443 0.00 0.00 FWadFileLump::GetFileOffset() 0.01 100.33 0.01 10357 0.00 0.00 FStringData::Realloc(unsigned long) 0.01 100.34 0.01 9093 0.00 0.00 PNGTexture_TryCreate(FileReader&, int) 0.01 100.35 0.01 7506 0.00 0.00 FPatchTexture::FPatchTexture(int, patch_t*) 0.01 100.36 0.01 7344 0.00 0.00 P_GetFriction(AActor const*, double*) 0.01 100.37 0.01 7299 0.00 0.00 CommandDrawNumber::Tick(SBarInfoMainBlock const*, DSBarInfo const*, bool) 0.01 100.38 0.01 2054 0.00 0.00 FindFlag(FFlagDef*, int, char const*) 0.01 100.39 0.01 1929 0.00 0.00 ParseAction(FScanner&, FState, FString, Baggage&) 0.01 100.40 0.01 1824 0.00 0.00 P_RunEffects() 0.01 100.41 0.01 1824 0.00 0.00 FImageCollection::operator[](int) const 0.01 100.42 0.01 670 0.00 0.00 FTexture::CreateSpans(unsigned char const*) const 0.01 100.43 0.01 108 0.00 0.03 R_DrawMasked() 0.01 100.44 0.01 108 0.00 0.03 R_DrawMaskedSingle(bool) 0.01 100.45 0.01 20 0.00 0.00 FxFunctionCall::Resolve(FCompileContext&) 0.01 100.46 0.01 3 0.00 0.00 FStringTable::FreeNonDehackedStrings() 0.01 100.47 0.01 1 0.01 0.03 P_LoadGLZSegs(FileReaderBase&, int) 0.01 100.48 0.01 1 0.01 0.01 P_SpawnSpecials() 0.01 100.49 0.01 1 0.01 0.01 P_FinalizePortals() 0.01 100.50 0.01 1 0.01 0.01 P_CreateBlockMap() 0.01 100.51 0.01 APlayerPawn::UseInventory(AInventory*) 0.01 100.52 0.01 mtherr
Sun Oct 30, 2016 3:32 pm
Attached the disassemble of GCC 5 and 6,
can't be diffed easily because the two function offsets are different attached also the diff between both after manually fixing the offset.
You do not have the required permissions to view the files attached to this post.
Sun Oct 30, 2016 9:37 pm
Fixed. I haven't a clue how it caused performance to outright tank like that, but it was the result of using a stack object after it was freed and thus undefined behavior.
Mon Oct 31, 2016 2:50 am
Can confirm the fps now looks normal (no difference between gcc 5 and gcc 6), thanks!
Thu Nov 03, 2016 6:44 am
I think it may have been clobbered by another local variable, like a loop counter, so that the code went haywire with incorrect values somewhere. The assembly without source is too messy to analyze so I can only guess.
Thu Nov 17, 2016 2:31 pm
Help please - trying to build ZDoom (on Ubuntu variant: Mint Cinnamon 18)
Does anyone have an up-to-date version of the guide to building ZDoom?
The one on the Wiki refers to a "make clean" command that has no rule; it also results in FMOD Ex 4.36 being required for compatibility with OpenAL.
Is this guide massively out of date?
For that matter, does anyone here build ZDoom on Linux and how does what they do differ from the guide on the Wiki?
EDIT:
I had to set NO_OPENAL (after finding HOW to set it), also to download and install libmpg123 and libsndfile as the Wiki guide doesn't install those.
Build zdoom in the end and it does play doom2 at least.
However, I don't know what bugs or incompatibilities lurk due to lack of OpenAL.
So any guidance from somebody who has built a fully-fledged ZDoom with openal and all the trimmings would be welcome
Thu Nov 17, 2016 7:10 pm
Yes, I have noticed that OpenAL support is broken in Linux, now, too, but since I never use it I just tick the "NO_OPENAL" box on cmake_gui. It really needs to auto set itself, though. I have a feeling nary a soul tests on Linux without proper OpenAL support which doesn't come out of the box as it is (at least on Ubuntu).
Thu Nov 17, 2016 9:03 pm
I'm confused, ZDoom builds and runs fine for me with or without OpenAL support.
@MartinHowe: I'm running Kubuntu 16.10 and all I do is:
Code: mkdir build cmake .. -G Ninja -DFMOD_INCLUDE_DIR=... -DFMOD_LIBRARY=... -DCMAKE_BUILD_TYPE=Release ninja
Thu Nov 17, 2016 9:46 pm
Have you tested that on a fresh Kubuntu install, following the instructions on the
wiki ?
Because last time I did, it didn't work for me, it errored out. (I used 16.04 though)
Thu Nov 17, 2016 11:13 pm
Blzut3 wrote: Graf Zahl wrote: because the headers it comes with are too outdated.
While I agree with the rest of the post, but just so you know: MinGW-w64 is not the same as MinGW in this regard. I don't recall any significant changes being required for w64 to work (in fact I think it was just fixing an ifdef), but vanilla required a bit of work (certainly doable since that's the only way to do C++11/14 on Win98 which I already did). The system I did these changes on wasn't set up to commit so I didn't get around to submitting the fixes.
So...what is necessary to compile (G)ZDoom on MinGW-W64 as of this very moment? Would these fixes cause netplay incompatibilities with non patched gcc compiled binaries?
Fri Nov 18, 2016 4:12 am
Eruanna wrote: Have you tested that on a fresh Kubuntu install, following the instructions on the
wiki ?
Because last time I did, it didn't work for me, it errored out. (I used 16.04 though)
Do you mind telling which errors?
But yeah, regarding the dependencies the wiki must be updated because openal requires also libsndfile1-dev and libmpg123-dev (at least on Ubuntu, I don't know about the other distributions).
Fri Nov 18, 2016 11:18 am
MartinHowe wrote: FMOD Ex 4.36 being required for compatibility with OpenAL.
That makes no sense at all. The opposite is true (FMOD Ex 4.36 breaks compatibility with OpenAL), and you need a version of FMOD Ex that's a lot more recent than what the wiki has linked to for the two to co-exist (I use the last version, 4.44.63 , and both coexist just fine.)
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia .