Jump to content
The Dark Mod Forums

duzenko

Active Developer
  • Posts

    4149
  • Joined

  • Last visited

  • Days Won

    50

Posts posted by duzenko

  1. I wonder how much the FPS cap plays into it.

    Switching from 60 game ticks per second to 1 tick per frame could bring one or two fps depending on your cpu speed. (On a IGP - contrary, dedicated GPU's may not benefit at all if they're 100% utilized),

    The major performance issue of a IGP system, I guess, is struggling between CPU and GPU over memory and CPU L3 cache. And the unfortunate feature of the vanilla D3 engine is it tries to read from system memory all the time. And each time it does, IGP has to stall its background operation.

    I suggest to install msi afterburner and monitor your GPU load in real time so that we can confirm it is 100% utilized.

  2. Do you mean in regards to more fixes for low perf. PC's?

    Exactly.

    I am myself stuck with a mobile Intel 15W chip.

    It's not as bad as the 4W chip I had before but still not enough for 30fps at 1080p.

    Mine is a 14nm chip, while yours is 32nm, so it is probably as slow for you at 768p.

    The fbo thing I've been sporadically working on recently is designed specifically for low end systems like mine.

    I've been thinking about an option to skip particles at all for a long time now, but my knowledge of engine and especially of mapping concepts is very limited.

  3. Yes, just updated to 2.05. It says on the ticket "Intel Dual Core B830 1.8 Ghz.

    It's an "X301A Asus".

     

    I presume the only solution than is to find time to manually configure and remove particles. Are there any plans to make extreme low settings like these available in the game settings? For low perf. PC's they look quite limited (at least if making the game available to those PC's is in plans at all).

    Try

    r_usefbo 1

    r_fboColorBits 15

    r_fboSharedColor 1

    r_fboSharedDepth 1

    But may I suggest to please create a separate topic for further discussion?

    • Like 1
  4. There's also a problem with OBS that whenever the compass is on the screen, OBS record just that and nothing else.

    Ruined several recording attempts of a few maps.

     

    Fraps works just fine if you have a beefy system and fast HDD to record to, otherwise it will murder your FPS.

    Can you give more info on that?

    Here's how it looks for me (intel hd 5500)

     

    Untitled.png

     

  5. I think it only makes sense to spend time on the compression changes if we can decompress in a separate thread.

    It's the only way we could improve both decompression speed and compression ratio.

    And improving one at the expense of the other probably leads to no added value.

  6. So I guess this begs the question. Is it now worthwhile to consider moving to a deferred render approach in TDM now

    that GPU hardware is already doing that behind the scenes?

    [smartass mode on] Since Pentium Pro x86 cpus have been running RISC microops behind the scenes - so should we move to a RISC compiler? :blush:

  7. It sounds like in this case, the GCC compiler is more capable than the Windows compiler, even though this bug (and make no mistake, this is a bug!) affects all OSes. I have a feeling that, overall, the GCC compiler may be much more thorough than the Windows compiler, but I have no hard evidence for this, only my experience over many years of the GCC suite getting better and better at finding problems in my (and others') code. If the Windows compiler has the equivalent of the GCC compiler options "-Wall" ("enables all the warnings about constructions that some users consider questionable") and/or "-Wextra" ("enables some extra warning flags that are not enabled by -Wall"), then it might be wise to enable them (assuming they aren't already), to see what folks compiling under Windows may have been missing for a while. In fact, I'd ask anyone compiling TDM under Windows (duzenko, maybe?) to check: Did it warn about this particular "memset()" call?

    With EnableAllWarnings (/Wall) MSVC swallows Model_ase.cpp quietly.

     

    the Dhewm branch has removed the memset. That's a pretty good endorsement for it's removal. :)

    Agree.

  8. I don't like warnings-laden code as well.

    However in that particular example with sizeof, what would be the fix?

    That looks like a bug - but who knows what the fix is - clear the pointer, dealloc mem or zero fill ? Or maybe comment out that line altogether?

  9. Actually, I believe that Hamlet's patch in the post immediately above yours will help.

    Oops, that hurt :).

    It kinda compiles for me now :awesome:. Didn't test how it runs because I'm on a VM and you guys run it on real hardware.

    Here's my svn patch that combines the changes from multiple Hamlet's patches.

    I think we're at the point where it should be applied to trunk.

     

     

    Index: game/gamesys/TypeInfo.cpp
    ===================================================================
    --- game/gamesys/TypeInfo.cpp    (revision 6735)
    +++ game/gamesys/TypeInfo.cpp    (working copy)
    @@ -17,6 +17,29 @@
     
     ******************************************************************************/
     
    +// As stated below, the trick of defining "private" and "protected" is pure evil.
    +// We pay for it in class definitions that implicitly declare private members
    +// without using the (default) private visibility declaration.
    +// This becomes a real problem in code like the one found in GCC 6.2, along the lines:
    +//     
    +//     class Class {
    +//       struct PrivateStruct; // forward declaration
    +//       // ...
    +//         private:
    +//       struct PrivateStruct {}; // actual definition
    +//     };
    +//
    +// In this case, PrivateStruct is implicitly declared private, and then defined as
    +// "private", that after our trick becomes "public". Joy ensues.
    +// We import all the things like that before the trick takes places.
    +// We loose access to some variable inspection, but we gain in compilability
    +// (and a bit in sanity).
    +#if defined(__GNUC__) && (__GNUC__ == 6)
    +// these were observed in GNU GCC 6.2.0 (not in 5.4.0):
    +#include <sstream>
    + #endif // if GCC 6+
    +
    +
     // This is real evil but allows the code to inspect arbitrary class variables.
     #define private        public
     #define protected    public
    Index: game/pugixml/pugixml.hpp
    ===================================================================
    --- game/pugixml/pugixml.hpp    (revision 6735)
    +++ game/pugixml/pugixml.hpp    (working copy)
    @@ -17,6 +17,9 @@
     #include "pugiconfig.hpp"
     
     #ifndef PUGIXML_NO_STL
    +#if defined(__clang__) || defined(__GNUC__)
    +#include <string>
    +#else
     namespace std
     {
         struct bidirectional_iterator_tag;
    @@ -43,6 +46,7 @@
         template <> class char_traits<char>;
     #endif
     }
    +#endif // if not clang nor GCC
     #endif
     
     // Macro for deprecated features
    Index: idlib/geometry/RenderMatrix.cpp
    ===================================================================
    --- idlib/geometry/RenderMatrix.cpp    (revision 6735)
    +++ idlib/geometry/RenderMatrix.cpp    (working copy)
    @@ -40,11 +40,13 @@
     #include "../bv/Bounds.h"
     #include "RenderMatrix.h"
     
    -//anon begin -- just comment this out to disable intrinsics
    -#define USE_INTRINSICS
    -#include <intrin.h>
    -#include "sys_intrinsics.h"
    -//anon end
    +//anon begin -- just comment this out to disable intrinsics
    +#ifdef _MSC_VER
    +#define USE_INTRINSICS
    +#include <intrin.h>
    +#include "sys_intrinsics.h"
    +#endif // if MicroSoft Compiler
    +//anon end
     
     // FIXME:    it would be nice if all render matrices were 16-byte aligned
     //            so there is no need for unaligned loads and stores everywhere
    Index: include/devil/IL/devil_internal_exports.h
    ===================================================================
    --- include/devil/IL/devil_internal_exports.h    (revision 6735)
    +++ include/devil/IL/devil_internal_exports.h    (working copy)
    @@ -24,7 +24,7 @@
     #ifndef NOINLINE
     #ifndef INLINE
     #if defined(__GNUC__)
    -    #define INLINE extern inline
    +    #define INLINE /* extern */ inline
     #elif defined(_MSC_VER)
         #define NOINLINE
         #define INLINE
    Index: include/devil/il_bmp.h
    ===================================================================
    --- include/devil/il_bmp.h    (revision 6735)
    +++ include/devil/il_bmp.h    (working copy)
    @@ -71,11 +71,11 @@
     ILboolean    ilReadRLE4Bmp(BMPHEAD *Info);
     ILboolean    iGetOS2Bmp(OS2_HEAD *Header);
     
    -#ifdef IL_BMP_C
    +/*#ifdef IL_BMP_C
     #undef NOINLINE
     #undef INLINE
     #define INLINE
    -#endif
    +#endif*/
     
     #ifndef NOINLINE
     INLINE ILvoid GetShiftFromMask(const ILuint Mask, ILuint * CONST_RESTRICT ShiftLeft, ILuint * CONST_RESTRICT ShiftRight) {
    Index: include/devil/il_endian.h
    ===================================================================
    --- include/devil/il_endian.h    (revision 6735)
    +++ include/devil/il_endian.h    (working copy)
    @@ -56,36 +56,36 @@
         #define BigDouble(d) iSwapDouble(d)
     #endif
     
    -ILvoid   iSwapUShort(ILushort *s);
    -ILvoid   iSwapShort(ILshort *s);
    -ILvoid   iSwapUInt(ILuint *i);
    -ILvoid   iSwapInt(ILint *i);
    -ILvoid   iSwapFloat(ILfloat *f);
    -ILvoid   iSwapDouble(ILdouble *d);
    -ILushort GetLittleUShort();
    -ILshort  GetLittleShort();
    -ILuint   GetLittleUInt();
    -ILint    GetLittleInt();
    -ILfloat  GetLittleFloat();
    -ILdouble GetLittleDouble();
    -ILushort GetBigUShort();
    -ILshort  GetBigShort();
    -ILuint   GetBigUInt();
    -ILint    GetBigInt();
    -ILfloat  GetBigFloat();
    -ILdouble GetBigDouble();
    -ILubyte SaveLittleUShort(ILushort s);
    -ILubyte SaveLittleShort(ILshort s);
    -ILubyte SaveLittleUInt(ILuint i);
    -ILubyte SaveLittleInt(ILint i);
    -ILubyte SaveLittleFloat(ILfloat f);
    -ILubyte SaveLittleDouble(ILdouble d);
    -ILubyte SaveBigUShort(ILushort s);
    -ILubyte SaveBigShort(ILshort s);
    -ILubyte SaveBigUInt(ILuint i);
    -ILubyte SaveBigInt(ILint i);
    -ILubyte SaveBigFloat(ILfloat f);
    -ILubyte SaveBigDouble(ILdouble d);
    +inline ILvoid   iSwapUShort(ILushort *s);
    +inline ILvoid   iSwapShort(ILshort *s);
    +inline ILvoid   iSwapUInt(ILuint *i);
    +inline ILvoid   iSwapInt(ILint *i);
    +inline ILvoid   iSwapFloat(ILfloat *f);
    +inline ILvoid   iSwapDouble(ILdouble *d);
    +inline ILushort GetLittleUShort();
    +inline ILshort  GetLittleShort();
    +inline ILuint   GetLittleUInt();
    +inline ILint    GetLittleInt();
    +inline ILfloat  GetLittleFloat();
    +inline ILdouble GetLittleDouble();
    +inline ILushort GetBigUShort();
    +inline ILshort  GetBigShort();
    +inline ILuint   GetBigUInt();
    +inline ILint    GetBigInt();
    +inline ILfloat  GetBigFloat();
    +inline ILdouble GetBigDouble();
    +inline ILubyte SaveLittleUShort(ILushort s);
    +inline ILubyte SaveLittleShort(ILshort s);
    +inline ILubyte SaveLittleUInt(ILuint i);
    +inline ILubyte SaveLittleInt(ILint i);
    +inline ILubyte SaveLittleFloat(ILfloat f);
    +inline ILubyte SaveLittleDouble(ILdouble d);
    +inline ILubyte SaveBigUShort(ILushort s);
    +inline ILubyte SaveBigShort(ILshort s);
    +inline ILubyte SaveBigUInt(ILuint i);
    +inline ILubyte SaveBigInt(ILint i);
    +inline ILubyte SaveBigFloat(ILfloat f);
    +inline ILubyte SaveBigDouble(ILdouble d);
     
     #ifdef IL_ENDIAN_C
     #undef NOINLINE
    
    

     

     

  10. Crinkelite: If you have not already done so:

    duzenko: When you return:

     

    I would encourage you both to take a look at Hamlet's patches, specifically the 'pugi_strings.patch.txt' patch. I think it will further your compilation attempts under Ubuntu 16.10.

     

    I would be interested to hear your results if you get a chance to try it.

    Pugxml has stopped complaining with that patch. It's good to be applied to trunk IMHO.

    Now I have this access redeclaration error. AFAIR it was mentioned somewhere already but can't remember where and whether it has been sorted out.

    P.S. Great job so far, Hamlet, NightStalker :)

    allout.txt

    • Like 1
×
×
  • Create New...