Closed jazzvaz closed 6 years ago
Visual Studio builds fine. Revert __stdcall?
The issue not with __stdcall, but 32 bit build is broken.
@jazzvaz I hope you wouldn't mind if I use your work in my repository =)
#ifdef _GPA_ENABLED
#include <tal.h>
#endif
Also, what is TAL? What's the purpose of it?
Oh yes, this defined mess that i cleaned... @Xottab-DUTY of course I dont mind, now proper threading is possible :) TAL is unknown, deleted file...
@jazzvaz, hmm.... AppVeyor failed to build your previous commit. Now it tries to build your new commit, but I think it will fail too =(
Also, GPA is Intel Graphic Performance Analyzer by Intel
What if we just remove Skin SSE for x86 with intrinsic functions?
@jazzvaz I think we should leave them.. Who knows.. But anyway, linker can't find not only *_SSE functions but _x86 too. This is strange..
@Xottab-DUTY I still think it is because of the calling convention. Let see. I don't see any point now in GPA, as well as Skin_SSE. We focus more on x64 version and it is not being used there.
@jazzvaz You don't need to remove 32bit specific code because we keep it for debugging purpose, it is useful to compare the engine behavior when you have some kind of issues that could be 64bit related. About GPA: feel free to remove that.
@Im-dex do you want me to revert Skin_SSE ? Do you think asm code is worth keeping?
@jazzvaz Oh, I see you have replaced it with *_x86 functions, I think it will be ok to keep that change.
@Im-dex If this request is done, you can close two issues:
Replace xrCPU_Pipe TTAPI Rewrite xrCPU_pipe asm code
@jazzvaz Only the second one. The first task implies work-stealing executor integration.
@Im-dex what do you mean exactly? Thread pool can do parallel execution like TBB or PPL, which was a part of Asynchronous tasks support.
@jazzvaz This thread pool implementation is pretty straightforward and you should manually balance the tasks across pool threads. Work-stealing based executors (or thread pools) such as PPL or TBB can balance the tasks across threads automatically.
@Im-dex then i dont see the point of having separate cpi_pipe library, just move skin implementation to core, and add tbb or ppl as a separate library. This will be good?
Or I can suggest to add "parallel for" implementation to the current thread pool.
I think that xrCPU_Pipe is too small to be a separate library =)
Well, i think many libraries can be shrink to one, or even replace them with static linking.
I don't see anything wrong in storing cpu_pipe as a separate library. It's required for several modules only, whereas xrCore contains general purpose code wich is required for almost every module of the engine.
@jazzvaz
Or I can suggest to add "parallel for" implementation to the current thread pool.
I think that reinventing the wheel is not a good idea ;)
Well, i think many libraries can be shrink to one, or even replace them with static linking.
What profit will it bring?
Well, i think many libraries can be shrink to one, or even replace them with static linking.
What profit will it bring?
For example: One executable file that you just double click then ????? then PROFIT :D
Позаимствую в OxyDev/xray-oxygen
@Xottab-DUTY
One executable file that you just double click then ????? then PROFIT :D
How it already works now, isn't it?
@Im-dex no, there is other dlls around in bin folder. I'm talking about static linking of all modules into one file. Like in Metro or Survarium and other games.
@Xottab-DUTY I still don't see any profit to have one fat binary.
@Im-dex just making all xr components static will bring performance, less hell with dllimport/export, so portability will be improved. These components are only used in the engine and working together with it. Also, there is no api for other programs, therefore, I don't see any point of having xr dlls. One binary will be around 20-40mb, but I would not call it fat nowadays.
@jazzvaz
just making all xr components static will bring performance
I think it will be a very small performance improvement which does not affect the whole engine performance
less hell with dllimport/export
agree
These components are only used in the engine and working together with it
Don't forget about utils. Also, someday sdk could become a part of repo too
@Im-dex forgot about sdk, agree with you
Replaced xray second thread with stl thread
@jazzvaz previous issues still not resolved
@Im-dex which issues?
what are utils and why they are not being part of the vs project from cmake?
@jazzvaz, it's compilers for game levels and other utils.
@jazzvaz, Im-Dex does not support them.
@ForserX you are wrong @jazzvaz you should pass -DBUILD_UTILS=YES to the cmake command line to enable utils projects generation
@Im-dex, да ты сам тогда говорил, что пока не хочешь заниматься ими. :)
@ForserX Это не значит, что я их не поддерживаю ;)
@Im-dex, могу тебе через PR как-нибудь для них фиксы отправить. Я их полностью подчинить умудрился.
в utils одни повторения друг у друга
@jazzvaz, вообще много где повторения у друг друга...
@ForserX Отправляй :)
Не очень понял, какие повторения вы имеете ввиду?
@Im-dex в разных utils повтоярется код и файлы, например:
cl_log.h xrThread.h
@Im-dex check if the set_thread_name is fine, so I do it for utils
Well, VS compiles fine
@Im-dex any ideas why AppVeyor does not have SetThreadDescription?
AppVeyor builds for x86 platform.
@jazzvaz, What platform you are building? x64? Try to build on x86.
@Im-dex for me both builds fine
@jazzvaz It seems that Appveyor host system is not a Win 10 and therefore cmake uses old sdk. I have set CMAKE_SYSTEM_VERSION to 10.0 in the build settings, think it should help.
Tested, working good. Felt less freezes; no more stupid ttapi initialization loops with long iterations, therefore, loading engine take less time. Hopefully, ttapi became less trivial and dumb.