From cc419761b307942c1f2bc037e06d0cd3c285ce32 Mon Sep 17 00:00:00 2001 From: Xottab-DUTY Date: Fri, 11 Aug 2017 18:48:14 +0500 Subject: [PATCH] Fix utils compilation ETools no longer depends on ColorPicker.lib xrSE_Factory is still broken --- sdk/include/hxgrid/Interface/VECOM.h | 31 +++------- src/utils/ETools/CreateDX.cpp | 6 +- src/utils/ETools/ETools.vcxproj | 22 +++---- src/utils/LWO/LWO.vcxproj | 9 --- src/utils/xrAI/xrAI.vcxproj | 6 -- src/utils/xrCompress/lzo/lzo_init.c | 2 + src/utils/xrCompress/xrCompress.vcxproj | 8 --- src/utils/xrDO_Light/xrDO_Light.vcxproj | 7 --- src/utils/xrDXT/DXT.vcxproj | 11 +--- src/utils/xrLC/xrLC.vcxproj | 18 ++---- src/utils/xrLC/xrPhase_MergeLM_Surface.cpp | 63 ++++++++++++++++++++- src/utils/xrSE_Factory/xrSE_Factory.cpp | 26 ++++----- src/utils/xrSE_Factory/xrSE_Factory.vcxproj | 29 ++++------ 13 files changed, 114 insertions(+), 124 deletions(-) diff --git a/sdk/include/hxgrid/Interface/VECOM.h b/sdk/include/hxgrid/Interface/VECOM.h index 985d58c90f7..cbc83788f2b 100644 --- a/sdk/include/hxgrid/Interface/VECOM.h +++ b/sdk/include/hxgrid/Interface/VECOM.h @@ -1,6 +1,8 @@ #ifndef VECOM_INCLUDED #define VECOM_INCLUDED +#include + #include "hxplatform.h" #include "Singleton.h" @@ -54,44 +56,28 @@ namespace VECOM class TRefCountHolder { public: - volatile ULONG RefCount; + std::atomic RefCount; TRefCountHolder() { - RefCount=1; + RefCount.store(1, std::memory_order_release); } }; } //namespace - -#ifndef _XBOX //for instantiated classes - tracks refcount #define IUNKNOWN_METHODS_IMPLEMENTATION_INSTANCE() \ VECOM::TRefCountHolder RefCountHolder; \ virtual HRESULT __stdcall QueryInterface(REFIID riid, void** ppv) {*ppv=NULL; return E_NOINTERFACE;}; \ - virtual ULONG __stdcall AddRef() {volatile ULONG* p = &RefCountHolder.RefCount; __asm {mov eax,p}; __asm{LOCK INC DWORD PTR [EAX]}; return RefCountHolder.RefCount;}; \ - virtual ULONG __stdcall Release() {volatile ULONG* p = &RefCountHolder.RefCount; __asm {mov eax,p}; __asm{LOCK DEC DWORD PTR [EAX]}; ULONG r = RefCountHolder.RefCount; if (r==0) delete this; return r;}; - -#define IUNKNOWN_METHODS_IMPLEMENTATION_INSTANCE_EXCLUDEQUERYINTERFACE() \ - VECOM::TRefCountHolder RefCountHolder; \ - virtual ULONG __stdcall AddRef() {volatile ULONG* p = &RefCountHolder.RefCount; __asm {mov eax,p}; __asm{LOCK INC DWORD PTR [EAX]}; return RefCountHolder.RefCount;}; \ - virtual ULONG __stdcall Release() {volatile ULONG* p = &RefCountHolder.RefCount; __asm {mov eax,p}; __asm{LOCK DEC DWORD PTR [EAX]}; ULONG r = RefCountHolder.RefCount; if (r==0) delete this; return r;}; - -#else - -#define IUNKNOWN_METHODS_IMPLEMENTATION_INSTANCE() \ - VECOM::TRefCountHolder RefCountHolder; \ - virtual HRESULT __stdcall QueryInterface(REFIID riid, void** ppv) {*ppv=NULL; return E_NOINTERFACE;}; \ - virtual ULONG __stdcall AddRef() {RefCountHolder.RefCount++; return RefCountHolder.RefCount;}; \ - virtual ULONG __stdcall Release() {RefCountHolder.RefCount--; ULONG r = RefCountHolder.RefCount; if (r==0) delete this; return r;}; + virtual ULONG __stdcall AddRef() { return RefCountHolder.RefCount.fetch_add(1, std::memory_order_acq_rel); }; \ + virtual ULONG __stdcall Release() { ULONG r = RefCountHolder.RefCount.fetch_sub(1, std::memory_order_acq_rel); if (r==0) delete this; return r;}; #define IUNKNOWN_METHODS_IMPLEMENTATION_INSTANCE_EXCLUDEQUERYINTERFACE() \ VECOM::TRefCountHolder RefCountHolder; \ - virtual ULONG __stdcall AddRef() {RefCountHolder.RefCount++; return RefCountHolder.RefCount;}; \ - virtual ULONG __stdcall Release() {RefCountHolder.RefCount--; ULONG r = RefCountHolder.RefCount; if (r==0) delete this; return r;}; + virtual ULONG __stdcall AddRef() { return RefCountHolder.RefCount.fetch_add(1, std::memory_order_acq_rel); }; \ + virtual ULONG __stdcall Release() { ULONG r = RefCountHolder.RefCount.fetch_sub(1, std::memory_order_acq_rel); if (r==0) delete this; return r; }; -#endif //factory method for creating interfaces typedef IUnknown* (__cdecl *PInterfaceFactoryMethod)(TINTERFACEID InterfaceId, DWORD version, const void* ExData); @@ -135,4 +121,3 @@ class TInterfaceObject : public InterfaceClass }; #endif VECOM_INCLUDED - diff --git a/src/utils/ETools/CreateDX.cpp b/src/utils/ETools/CreateDX.cpp index 0628e3839b5..f4715ed15a7 100644 --- a/src/utils/ETools/CreateDX.cpp +++ b/src/utils/ETools/CreateDX.cpp @@ -5,14 +5,16 @@ #include "xrCore/Debug/dxerr.h" // misc +// Xottab_DUTY: it seems this is not used.. +/* __declspec(dllimport) bool WINAPI - FSColorPickerDoModal(unsigned int* currentColor, unsigned int* originalColor, const int initialExpansionState); +FSColorPickerDoModal(unsigned int* currentColor, unsigned int* originalColor, const int initialExpansionState); extern "C" __declspec(dllexport) bool __stdcall FSColorPickerExecute( unsigned int* currentColor, unsigned int* originalColor, const int initialExpansionState) { return FSColorPickerDoModal(currentColor, originalColor, initialExpansionState); } - +*/ extern "C" { ETOOLS_API UINT WINAPI D3DX_GetDriverLevel(LPDIRECT3DDEVICE9 pDevice) { return D3DXGetDriverLevel(pDevice); } ETOOLS_API HRESULT WINAPI D3DX_GetImageInfoFromFileInMemory( diff --git a/src/utils/ETools/ETools.vcxproj b/src/utils/ETools/ETools.vcxproj index e46d6399bd2..1a21a135198 100644 --- a/src/utils/ETools/ETools.vcxproj +++ b/src/utils/ETools/ETools.vcxproj @@ -154,16 +154,14 @@ 0x0422 - /MACHINE:I386 %(AdditionalOptions) libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;%(AdditionalDependencies) - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);%(AdditionalLibraryDirectories) user32.lib;%(IgnoreSpecificDefaultLibraries) true true true UseLinkTimeCodeGeneration false - MachineX86 @@ -200,9 +198,8 @@ 0x0422 - /MACHINE:I386 %(AdditionalOptions) libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;%(AdditionalDependencies) - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);%(AdditionalLibraryDirectories) user32.lib;%(IgnoreSpecificDefaultLibraries) true true @@ -239,14 +236,12 @@ 0x0422 - /MACHINE:I386 %(AdditionalOptions) libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;%(AdditionalDependencies) - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);%(AdditionalLibraryDirectories) user32.lib;%(IgnoreSpecificDefaultLibraries) Windows true false - MachineX86 @@ -276,9 +271,8 @@ 0x0422 - /MACHINE:I386 %(AdditionalOptions) libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;%(AdditionalDependencies) - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);%(AdditionalLibraryDirectories) user32.lib;%(IgnoreSpecificDefaultLibraries) Windows true @@ -317,9 +311,9 @@ 0x0422 - /MACHINE:I386 /NODEFAULTLIB:user32 %(AdditionalOptions) + /NODEFAULTLIB:user32 %(AdditionalOptions) libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;%(AdditionalDependencies) - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);%(AdditionalLibraryDirectories) user32.dll;%(IgnoreSpecificDefaultLibraries) true Windows @@ -360,9 +354,9 @@ 0x0422 - /MACHINE:I386 /NODEFAULTLIB:user32 %(AdditionalOptions) + /NODEFAULTLIB:user32 %(AdditionalOptions) libogg_static.lib;libvorbis_static.lib;libvorbisfile_static.lib;%(AdditionalDependencies) - $(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);%(AdditionalLibraryDirectories) user32.dll;%(IgnoreSpecificDefaultLibraries) true Windows diff --git a/src/utils/LWO/LWO.vcxproj b/src/utils/LWO/LWO.vcxproj index 7b30d836379..6cb21a7f66c 100644 --- a/src/utils/LWO/LWO.vcxproj +++ b/src/utils/LWO/LWO.vcxproj @@ -147,12 +147,10 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true false $(xrLibDir)$(TargetName).lib - MachineX86 @@ -180,7 +178,6 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true false @@ -213,12 +210,10 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true false $(xrLibDir)$(TargetName).lib - MachineX86 @@ -246,7 +241,6 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true false @@ -277,13 +271,11 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) false $(xrLibDir)$(TargetName).lib - MachineX86 @@ -309,7 +301,6 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) odbc32.lib;odbccp32.lib;%(AdditionalDependencies) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) diff --git a/src/utils/xrAI/xrAI.vcxproj b/src/utils/xrAI/xrAI.vcxproj index 092d8292ea4..b1bd6640dba 100644 --- a/src/utils/xrAI/xrAI.vcxproj +++ b/src/utils/xrAI/xrAI.vcxproj @@ -151,7 +151,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) false @@ -192,7 +191,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) false @@ -240,7 +238,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) Windows @@ -288,7 +285,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) Windows @@ -335,7 +331,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) true @@ -381,7 +376,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) true diff --git a/src/utils/xrCompress/lzo/lzo_init.c b/src/utils/xrCompress/lzo/lzo_init.c index 0533247bafd..d4332584385 100644 --- a/src/utils/xrCompress/lzo/lzo_init.c +++ b/src/utils/xrCompress/lzo/lzo_init.c @@ -140,11 +140,13 @@ static lzo_bool basic_integral_check(void) #if defined(SIZEOF_UNSIGNED_SHORT) COMPILE_TIME_ASSERT(SIZEOF_UNSIGNED_SHORT == sizeof(unsigned short)); #endif +/* #if !defined(__LZO_IN_MINILZO) #if defined(SIZEOF_SIZE_T) COMPILE_TIME_ASSERT(SIZEOF_SIZE_T == sizeof(size_t)); #endif #endif +*/ /* assert the signedness of our integral types */ COMPILE_TIME_ASSERT(IS_UNSIGNED(unsigned char)); diff --git a/src/utils/xrCompress/xrCompress.vcxproj b/src/utils/xrCompress/xrCompress.vcxproj index 4847300a2bf..c854a50c432 100644 --- a/src/utils/xrCompress/xrCompress.vcxproj +++ b/src/utils/xrCompress/xrCompress.vcxproj @@ -143,7 +143,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Console @@ -152,7 +151,6 @@ true UseLinkTimeCodeGeneration false - MachineX86 @@ -185,7 +183,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Console @@ -220,13 +217,11 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Console true false - MachineX86 @@ -253,7 +248,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Console @@ -287,7 +281,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) true @@ -323,7 +316,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) true diff --git a/src/utils/xrDO_Light/xrDO_Light.vcxproj b/src/utils/xrDO_Light/xrDO_Light.vcxproj index b3d1e559de8..34d675b01c2 100644 --- a/src/utils/xrDO_Light/xrDO_Light.vcxproj +++ b/src/utils/xrDO_Light/xrDO_Light.vcxproj @@ -141,14 +141,12 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Windows true false $(xrLibDir)$(TargetName).lib - MachineX86 @@ -175,7 +173,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Windows @@ -217,7 +214,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Windows @@ -261,7 +257,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) Windows @@ -302,7 +297,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) true @@ -345,7 +339,6 @@ 0x0409 - /MACHINE:I386 %(AdditionalOptions) true $(DXSDK_DIR)Lib\x86;$(xrSdkDir)libraries;$(xrLibDir);%(AdditionalLibraryDirectories) true diff --git a/src/utils/xrDXT/DXT.vcxproj b/src/utils/xrDXT/DXT.vcxproj index 47689005e2c..e6270ada91c 100644 --- a/src/utils/xrDXT/DXT.vcxproj +++ b/src/utils/xrDXT/DXT.vcxproj @@ -158,7 +158,6 @@ 0x0422 - /MACHINE:I386 %(AdditionalOptions) %(IgnoreSpecificDefaultLibraries) $(OutDir)$(TargetName).pdb false @@ -167,7 +166,6 @@ true true UseLinkTimeCodeGeneration - MachineX86 false @@ -209,7 +207,6 @@ 0x0422 - /MACHINE:I386 %(AdditionalOptions) %(IgnoreSpecificDefaultLibraries) $(OutDir)$(TargetName).pdb false @@ -253,12 +250,11 @@ 0x0422 - /MACHINE:I386 /NODEFAULTLIB:LIBCMT %(AdditionalOptions) + /NODEFAULTLIB:LIBCMT;%(AdditionalOptions) %(IgnoreSpecificDefaultLibraries) false true - MachineX86 false @@ -293,7 +289,6 @@ 0x0422 - /MACHINE:I386 /NODEFAULTLIB:LIBCMT %(AdditionalOptions) %(IgnoreSpecificDefaultLibraries) false @@ -337,7 +332,7 @@ 0x0422 - /MACHINE:I386 /NODEFAULTLIB:msvcp %(AdditionalOptions) + /NODEFAULTLIB:msvcp;%(AdditionalOptions) %(IgnoreSpecificDefaultLibraries) true false @@ -382,7 +377,7 @@ 0x0422 - /MACHINE:I386 /NODEFAULTLIB:msvcp %(AdditionalOptions) + /NODEFAULTLIB:msvcp;%(AdditionalOptions) %(IgnoreSpecificDefaultLibraries) true false diff --git a/src/utils/xrLC/xrLC.vcxproj b/src/utils/xrLC/xrLC.vcxproj index 3a5fceb606c..d0d1239ead0 100644 --- a/src/utils/xrLC/xrLC.vcxproj +++ b/src/utils/xrLC/xrLC.vcxproj @@ -157,10 +157,9 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) NotSet true - $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\$(PlatformShortName);%(AdditionalLibraryDirectories) Windows true true @@ -168,7 +167,6 @@ UseLinkTimeCodeGeneration false $(xrLibDir)$(TargetName).lib - MachineX86 @@ -207,10 +205,9 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) NotSet true - $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\$(PlatformShortName);%(AdditionalLibraryDirectories) Windows true true @@ -247,15 +244,13 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) true - $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\$(PlatformShortName);%(AdditionalLibraryDirectories) Windows 2097152 true false $(xrLibDir)$(TargetName).lib - MachineX86 @@ -285,9 +280,8 @@ 0x0419 - /MACHINE:I386 %(AdditionalOptions) true - $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\$(PlatformShortName);%(AdditionalLibraryDirectories) Windows 2097152 true @@ -331,7 +325,7 @@ NotSet true - $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\$(PlatformShortName);%(AdditionalLibraryDirectories) true false Windows @@ -378,7 +372,7 @@ NotSet true - $(DXSDK_DIR)Lib\x86;$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\x32;%(AdditionalLibraryDirectories) + $(DXSDK_DIR)Lib\$(PlatformShortName);$(xrLibDir);$(xrSdkDir)libraries;$(xrExternals)FreeImage\Dist\$(PlatformShortName);%(AdditionalLibraryDirectories) true false Windows diff --git a/src/utils/xrLC/xrPhase_MergeLM_Surface.cpp b/src/utils/xrLC/xrPhase_MergeLM_Surface.cpp index 02fe4096549..8069546ed35 100644 --- a/src/utils/xrLC/xrPhase_MergeLM_Surface.cpp +++ b/src/utils/xrLC/xrPhase_MergeLM_Surface.cpp @@ -3,8 +3,12 @@ #include "xrPhase_MergeLM_Rect.h" #include "utils/xrLC_Light/xrdeflector.h" +#ifdef XR_X64 +#include +#else #include #include +#endif static BYTE surface[c_LMAP_size * c_LMAP_size]; const u32 alpha_ref = 254 - BORDER; @@ -51,8 +55,13 @@ bool Place_Perpixel(L_rect& R, lm_layer* D, BOOL bRotate) int s_y = D->height + 2 * BORDER; int x; +#ifdef _M_X64 + __m128i mm_alpha_ref = _mm_set1_epi8(alpha_ref); + __m128i mm_zero = _mm_setzero_si128(); +#else const __m64 mm_alpha_ref = _mm_set1_pi8(alpha_ref); const __m64 mm_zero = _mm_setzero_si64(); +#endif if (!bRotate) { @@ -65,6 +74,17 @@ bool Place_Perpixel(L_rect& R, lm_layer* D, BOOL bRotate) for (x = 0; x < s_x - 8; x += 8, P += 8, S += 8) { // if ( (*P) && ( *S >= alpha_ref ) ) goto r_false; // overlap +#ifdef XR_X64 + __m128i regS = _mm_set1_epi64x(*((__int64*)S)); + __m128i regP = _mm_set1_epi64x(*((__int64*)P)); + __m128i mm_max = _mm_max_epu8(regS, mm_alpha_ref); + __m128i mm_cmp = _mm_cmpeq_epi8(mm_max, mm_alpha_ref); + __m128i mm_andn = _mm_andnot_si128(mm_cmp, regP); + __m128i mm_andn_low = _mm_move_epi64(mm_andn); + __m128i mm_sad = _mm_sad_epu8(mm_andn_low, mm_zero); + if (_mm_cvtsi128_si32(mm_sad)) + return false; +#else __m64 mm_max = _mm_max_pu8(*(__m64*)S, mm_alpha_ref); __m64 mm_cmp = _mm_cmpeq_pi8(mm_max, mm_alpha_ref); __m64 mm_andn = _mm_andnot_si64(mm_cmp, *(__m64*)P); @@ -74,12 +94,15 @@ bool Place_Perpixel(L_rect& R, lm_layer* D, BOOL bRotate) _mm_empty(); return false; } +#endif } // remainder part for (; x < s_x; x++, P++, S++) if ((*P) && (*S >= alpha_ref)) { +#ifdef XR_X86 _mm_empty(); +#endif return false; } } @@ -93,14 +116,18 @@ bool Place_Perpixel(L_rect& R, lm_layer* D, BOOL bRotate) for (x = 0; x < s_y; x++, P++) if ((*P) && (lm[x * s_x + y] >= alpha_ref)) { +#ifdef XR_X86 _mm_empty(); +#endif return false; } } } // It's OK to place it +#ifdef XR_X86 _mm_empty(); +#endif return true; } @@ -121,6 +148,17 @@ BOOL _rect_place(L_rect& r, lm_layer* D) // accelerated part for (_X = 0; _X < x_max - 8;) { +#ifdef _M_X64 + __m128i init = _mm_set1_epi64x(*(temp_surf + _X)); + __m128i m64_cmp = _mm_cmpeq_epi8(init, _mm_setzero_si128()); + __m128i m64_cmp_low = _mm_move_epi64(m64_cmp); + __m128i m64_work = _mm_sad_epu8(m64_cmp_low, _mm_setzero_si128()); + + if (!_mm_cvtsi128_si32(m64_work)) { + _X += 8; + continue; + } +#else __m64 m64_cmp = _mm_cmpeq_pi8(*(__m64*)(temp_surf + _X), _mm_setzero_si64()); __m64 m64_work = _mm_sad_pu8(m64_cmp, _mm_setzero_si64()); @@ -129,7 +167,7 @@ BOOL _rect_place(L_rect& r, lm_layer* D) _X += 8; continue; } - +#endif if (temp_surf[_X]) { _X++; @@ -144,7 +182,9 @@ BOOL _rect_place(L_rect& r, lm_layer* D) { _rect_register(R, D, FALSE); r.set(R); +#ifdef XR_X86 _mm_empty(); +#endif return TRUE; } } @@ -158,7 +198,9 @@ BOOL _rect_place(L_rect& r, lm_layer* D) { _rect_register(R, D, FALSE); r.set(R); +#ifdef XR_X86 _mm_empty(); +#endif return TRUE; } } @@ -175,6 +217,17 @@ BOOL _rect_place(L_rect& r, lm_layer* D) // accelerated part for (_X = 0; _X < x_max - 8;) { +#ifdef _M_X64 + __m128i init = _mm_set1_epi64x(*(temp_surf + _X)); + __m128i m64_cmp = _mm_cmpeq_epi8(init, _mm_setzero_si128()); + __m128i m64_cmp_low = _mm_move_epi64(m64_cmp); + __m128i m64_work = _mm_sad_epu8(m64_cmp_low, _mm_setzero_si128()); + + if (!_mm_cvtsi128_si32(m64_work)) { + _X += 8; + continue; + } +#else __m64 m64_cmp = _mm_cmpeq_pi8(*(__m64*)(temp_surf + _X), _mm_setzero_si64()); __m64 m64_work = _mm_sad_pu8(m64_cmp, _mm_setzero_si64()); @@ -183,7 +236,7 @@ BOOL _rect_place(L_rect& r, lm_layer* D) _X += 8; continue; } - +#endif if (temp_surf[_X]) { _X++; @@ -198,7 +251,9 @@ BOOL _rect_place(L_rect& r, lm_layer* D) { _rect_register(R, D, TRUE); r.set(R); +#ifdef XR_X86 _mm_empty(); +#endif return TRUE; } } @@ -212,13 +267,17 @@ BOOL _rect_place(L_rect& r, lm_layer* D) { _rect_register(R, D, TRUE); r.set(R); +#ifdef XR_X86 _mm_empty(); +#endif return TRUE; } } } } +#ifdef XR_X86 _mm_empty(); +#endif return FALSE; } diff --git a/src/utils/xrSE_Factory/xrSE_Factory.cpp b/src/utils/xrSE_Factory/xrSE_Factory.cpp index 2050e3fcbeb..66668e84a05 100644 --- a/src/utils/xrSE_Factory/xrSE_Factory.cpp +++ b/src/utils/xrSE_Factory/xrSE_Factory.cpp @@ -18,21 +18,16 @@ #include "character_info.h" #include "specific_character.h" -#include -#include - -#pragma comment(lib, "xrCore.lib") - extern CSE_Abstract* F_entity_Create(LPCSTR section); extern CScriptPropertiesListHelper* g_property_list_helper; extern HMODULE prop_helper_module; extern "C" { -FACTORY_API IServerEntity* __stdcall create_entity(LPCSTR section) { return (F_entity_Create(section)); } +FACTORY_API IServerEntity* __stdcall create_entity(LPCSTR section) { return F_entity_Create(section); } FACTORY_API void __stdcall destroy_entity(IServerEntity*& abstract) { - CSE_Abstract* object = smart_cast(abstract); + auto object = smart_cast(abstract); F_entity_Destroy(object); abstract = 0; } @@ -51,13 +46,12 @@ BOOL APIENTRY DllMain(HANDLE module_handle, DWORD call_reason, LPVOID reserved) { case DLL_PROCESS_ATTACH: { - // g_temporary_stuff = &trivial_encryptor::decode; - - Debug._initialize(false); - Core.Initialize("xrSE_Factory", NULL, TRUE, "fsfactory.ltx"); + //g_temporary_stuff = &trivial_encryptor::decode; + xrDebug::Initialize(false); + Core.Initialize("xrSE_Factory", nullptr, true, "fsfactory.ltx"); string_path SYSTEM_LTX; FS.update_path(SYSTEM_LTX, "$game_config$", "system.ltx"); - pSettings = xr_new(SYSTEM_LTX); + pSettings = new CInifile(SYSTEM_LTX); setup_luabind_allocator(); @@ -74,7 +68,7 @@ BOOL APIENTRY DllMain(HANDLE module_handle, DWORD call_reason, LPVOID reserved) CSpecificCharacter::DeleteIdToIndexData(); xr_delete(g_object_factory); - CInifile** s = (CInifile**)(&pSettings); + auto s = (CInifile**)&pSettings; xr_delete(*s); xr_delete(g_property_list_helper); xr_delete(g_ai_space); @@ -90,13 +84,13 @@ BOOL APIENTRY DllMain(HANDLE module_handle, DWORD call_reason, LPVOID reserved) void _destroy_item_data_vector_cont(T_VECTOR* vec) { - T_VECTOR::iterator it = vec->begin(); - T_VECTOR::iterator it_e = vec->end(); + auto it = vec->begin(); + auto it_e = vec->end(); xr_vector _tmp; for (; it != it_e; ++it) { - xr_vector::iterator it_f = std::find(_tmp.begin(), _tmp.end(), (*it)._xml); + auto it_f = std::find(_tmp.begin(), _tmp.end(), (*it)._xml); if (it_f == _tmp.end()) _tmp.push_back((*it)._xml); } diff --git a/src/utils/xrSE_Factory/xrSE_Factory.vcxproj b/src/utils/xrSE_Factory/xrSE_Factory.vcxproj index 9184e465521..1e5b5ac748f 100644 --- a/src/utils/xrSE_Factory/xrSE_Factory.vcxproj +++ b/src/utils/xrSE_Factory/xrSE_Factory.vcxproj @@ -127,7 +127,7 @@ Disabled false - $(SolutionDir)xrServerEntities;%(AdditionalIncludeDirectories) + $(SolutionDir)xrServerEntities;$(xrExternals)pugixml\src;%(AdditionalIncludeDirectories) WIN32;DEBUG;_WINDOWS;_USRDLL;XRSE_FACTORY_EXPORTS;MSVC;_SECURE_SCL=0;%(PreprocessorDefinitions) false false @@ -156,7 +156,7 @@ Disabled false - $(SolutionDir)xrServerEntities;%(AdditionalIncludeDirectories) + $(SolutionDir)xrServerEntities;$(xrExternals)pugixml\src;%(AdditionalIncludeDirectories) WIN32;DEBUG;_WINDOWS;_USRDLL;XRSE_FACTORY_EXPORTS;MSVC;_SECURE_SCL=0;%(PreprocessorDefinitions) false false @@ -195,7 +195,7 @@ Speed false true - $(SolutionDir)xrServerEntities;%(AdditionalIncludeDirectories) + $(SolutionDir)xrServerEntities;$(xrExternals)pugixml\src;%(AdditionalIncludeDirectories) DEBUG;MIXED;WIN32;DEBUG;_WINDOWS;_USRDLL;XRSE_FACTORY_EXPORTS;dSINGLE;MSVC;_SECURE_SCL=0;%(PreprocessorDefinitions) true false @@ -238,7 +238,7 @@ Speed false true - $(SolutionDir)xrServerEntities;%(AdditionalIncludeDirectories) + $(SolutionDir)xrServerEntities;$(xrExternals)pugixml\src;%(AdditionalIncludeDirectories) DEBUG;MIXED;WIN32;DEBUG;_WINDOWS;_USRDLL;XRSE_FACTORY_EXPORTS;dSINGLE;MSVC;_SECURE_SCL=0;%(PreprocessorDefinitions) true false @@ -276,10 +276,9 @@ true true true - $(SolutionDir)xrServerEntities;%(AdditionalIncludeDirectories) + $(SolutionDir)xrServerEntities;$(xrExternals)pugixml\src;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;XRSE_FACTORY_EXPORTS;LUABIND_NO_ERROR_CHECKING;_SECURE_SCL=0;%(PreprocessorDefinitions) true - MultiThreadedDLL false false @@ -309,11 +308,9 @@ true true true - $(SolutionDir)xrServerEntities;%(AdditionalIncludeDirectories) + $(SolutionDir)xrServerEntities;$(xrExternals)pugixml\src;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;XRSE_FACTORY_EXPORTS;LUABIND_NO_ERROR_CHECKING;_SECURE_SCL=0;%(PreprocessorDefinitions) true - - MultiThreadedDLL false false @@ -938,18 +935,16 @@ - - {cc52e0b3-cc35-4934-9302-035b748f3f2c} - false - - - {f6c4f74a-152c-4612-9e3b-d02346234855} - false - {a0f7d1fb-59a7-4717-a7e4-96f37e91998e} false + + {ccd4afae-aa10-42c6-a452-fdee497ccdf1} + + + {632aeeb6-dc06-4e15-9551-b2b09a4b73c5} +