Browse Source

Merge pull request #186 from nillerusr/win64

Win64
pull/191/head
nillerusr 2 years ago committed by GitHub
parent
commit
9586dc98e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 30
      .github/workflows/build.yml
  2. 22
      .github/workflows/tests.yml
  3. 2
      dedicated/sys_ded.cpp
  4. 2
      engine/downloadthread.cpp
  5. 11
      engine/tmessage.cpp
  6. 2
      filesystem/filesystem_stdio.cpp
  7. 4
      game/client/client_thinklist.cpp
  8. 2
      game/client/client_thinklist.h
  9. 2
      game/client/clientleafsystem.cpp
  10. 2
      game/server/ai_navigator.cpp
  11. 2
      ivp
  12. 2
      materialsystem/CColorCorrection.cpp
  13. 8
      public/basehandle.h
  14. 2
      public/saverestoretypes.h
  15. 4
      studiorender/r_studiodraw.cpp
  16. 3
      wscript

30
.github/workflows/build.yml

@ -1,12 +1,6 @@
name: Build name: Build
on: on: [push, pull_request]
push:
branches:
- "*"
pull_request:
branches:
- "*"
jobs: jobs:
build-linux-i386: build-linux-i386:
@ -47,6 +41,17 @@ jobs:
./waf.bat configure -T debug ./waf.bat configure -T debug
./waf.bat build ./waf.bat build
build-windows-amd64:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- name: Build windows-amd64
run: |
git submodule init && git submodule update
./waf.bat configure -T debug -8
./waf.bat build
build-dedicated-windows-i386: build-dedicated-windows-i386:
runs-on: windows-2019 runs-on: windows-2019
@ -58,6 +63,17 @@ jobs:
./waf.bat configure -T debug -d ./waf.bat configure -T debug -d
./waf.bat build ./waf.bat build
build-dedicated-windows-amd64:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- name: Build dedicated windows-amd64
run: |
git submodule init && git submodule update
./waf.bat configure -T debug -d -8
./waf.bat build
build-dedicated-linux-i386: build-dedicated-linux-i386:
runs-on: ubuntu-18.04 runs-on: ubuntu-18.04

22
.github/workflows/tests.yml

@ -1,12 +1,6 @@
name: Tests name: Tests
on: on: [push, pull_request]
push:
branches:
- "*"
pull_request:
branches:
- "*"
jobs: jobs:
tests-linux-i386: tests-linux-i386:
@ -40,3 +34,17 @@ jobs:
cd out cd out
$env:Path = "bin"; $env:Path = "bin";
./unittest.exe ./unittest.exe
tests-windows-amd64:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
- name: Run tests windows-amd64
run: |
git submodule init && git submodule update
./waf.bat configure -T release --tests --prefix=out/ -8
./waf.bat install
cd out
$env:Path = "bin";
./unittest.exe

2
dedicated/sys_ded.cpp

@ -470,7 +470,7 @@ bool CDedicatedSteamApplication::Create( )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
#ifndef POSIX #if !defined( POSIX ) && !defined( PLATFORM_64BITS )
_asm _asm
{ {
fninit fninit

2
engine/downloadthread.cpp

@ -425,7 +425,7 @@ DWORD __stdcall DownloadThread( void *voidPtr )
//Thread_DPrintf( "Requesting full download\n%s", headers ); //Thread_DPrintf( "Requesting full download\n%s", headers );
} }
rc.hDataResource = InternetOpenUrl(rc.hOpenResource, fullURL, headerPtr, headerLen, flags,(DWORD)(&rc) ); rc.hDataResource = InternetOpenUrl(rc.hOpenResource, fullURL, headerPtr, headerLen, flags, (DWORD_PTR)(&rc) );
// send the request off // send the request off
if ( !rc.hDataResource ) if ( !rc.hDataResource )

11
engine/tmessage.cpp

@ -322,10 +322,17 @@ int ParseDirective( const char *pText )
{ {
if ( ParseFloats( pText, tempFloat, 4 ) ) if ( ParseFloats( pText, tempFloat, 4 ) )
{ {
for ( int i = 0; i < 4; ++i ) // that's original code, msvc2015 generates illegal instruction on amd64 architecture
/*for ( int i = 0; i < 4; ++i )
{ {
gMessageParms.boxcolor[ i ] = (byte)(int)tempFloat[ i ]; gMessageParms.boxcolor[ i ] = (byte)(int)tempFloat[ i ];
} }*/
// workaround
gMessageParms.boxcolor[0] = (int)tempFloat[0];
gMessageParms.boxcolor[1] = (int)tempFloat[1];
gMessageParms.boxcolor[2] = (int)tempFloat[2];
gMessageParms.boxcolor[3] = (int)tempFloat[3];
} }
} }
else if ( IsToken( pText, "clearmessage" ) ) else if ( IsToken( pText, "clearmessage" ) )

2
filesystem/filesystem_stdio.cpp

@ -1413,7 +1413,7 @@ size_t CWin32ReadOnlyFile::FS_fread( void *dest, size_t destSize, size_t size )
if ( m_hFileUnbuffered != INVALID_HANDLE_VALUE ) if ( m_hFileUnbuffered != INVALID_HANDLE_VALUE )
{ {
const int destBaseAlign = ( IsX360() ) ? 4 : m_SectorSize; const int destBaseAlign = ( IsX360() ) ? 4 : m_SectorSize;
bool bDestBaseIsAligned = ( (DWORD)dest % destBaseAlign == 0 ); bool bDestBaseIsAligned = ( (DWORD_PTR)dest % destBaseAlign == 0 );
bool bCanReadUnbufferedDirect = ( bDestBaseIsAligned && ( destSize % m_SectorSize == 0 ) && ( m_ReadPos % m_SectorSize == 0 ) ); bool bCanReadUnbufferedDirect = ( bDestBaseIsAligned && ( destSize % m_SectorSize == 0 ) && ( m_ReadPos % m_SectorSize == 0 ) );
if ( bCanReadUnbufferedDirect ) if ( bCanReadUnbufferedDirect )

4
game/client/client_thinklist.cpp

@ -158,7 +158,7 @@ void CClientThinkList::RemoveThinkable( ClientThinkHandle_t hThink )
{ {
pThink->SetThinkHandle( INVALID_THINK_HANDLE ); pThink->SetThinkHandle( INVALID_THINK_HANDLE );
} }
m_ThinkEntries.Remove( (unsigned long)hThink ); m_ThinkEntries.Remove( (uintp)hThink );
} }
@ -304,7 +304,7 @@ void CClientThinkList::PerformThinkFunctions()
if ( hThink != INVALID_THINK_HANDLE ) if ( hThink != INVALID_THINK_HANDLE )
{ {
// This can happen if the same think handle was removed twice // This can happen if the same think handle was removed twice
if ( !m_ThinkEntries.IsInList( (unsigned long)hThink ) ) if ( !m_ThinkEntries.IsInList( (uintp)hThink ) )
continue; continue;
// NOTE: This is necessary for the case where the client entity handle // NOTE: This is necessary for the case where the client entity handle

2
game/client/client_thinklist.h

@ -121,7 +121,7 @@ inline ClientThinkHandle_t CClientThinkList::GetInvalidThinkHandle()
inline CClientThinkList::ThinkEntry_t* CClientThinkList::GetThinkEntry( ClientThinkHandle_t hThink ) inline CClientThinkList::ThinkEntry_t* CClientThinkList::GetThinkEntry( ClientThinkHandle_t hThink )
{ {
return &m_ThinkEntries[ (unsigned long)hThink ]; return &m_ThinkEntries[ (uintp)hThink ];
} }

2
game/client/clientleafsystem.cpp

@ -1337,7 +1337,7 @@ void CClientLeafSystem::ComputeTranslucentRenderLeaf( int count, const LeafIndex
static CUtlVector<RenderableInfo_t *> orderedList; // @MULTICORE (toml 8/30/2006): will need to make non-static if thread this function static CUtlVector<RenderableInfo_t *> orderedList; // @MULTICORE (toml 8/30/2006): will need to make non-static if thread this function
static CUtlVector<IClientRenderable *> renderablesToUpdate; static CUtlVector<IClientRenderable *> renderablesToUpdate;
int leaf = 0; intp leaf = 0;
for ( i = 0; i < count; ++i ) for ( i = 0; i < count; ++i )
{ {
leaf = pLeafList[i]; leaf = pLeafList[i];

2
game/server/ai_navigator.cpp

@ -1222,7 +1222,7 @@ float CAI_Navigator::GetPathTimeToGoal()
AI_PathNode_t CAI_Navigator::GetNearestNode() AI_PathNode_t CAI_Navigator::GetNearestNode()
{ {
#ifdef WIN32 #ifdef WIN32
COMPILE_TIME_ASSERT( (int)AIN_NO_NODE == NO_NODE ); COMPILE_TIME_ASSERT( (intp)AIN_NO_NODE == NO_NODE );
#endif #endif
return (AI_PathNode_t)(intp)( GetPathfinder()->NearestNodeToNPC() ); return (AI_PathNode_t)(intp)( GetPathfinder()->NearestNodeToNPC() );
} }

2
ivp

@ -1 +1 @@
Subproject commit dfa42eb575618661a9c41c2ed635c1b9a0a51858 Subproject commit 960c7228f8e8d710625891991e88b1ec3aa92e45

2
materialsystem/CColorCorrection.cpp

@ -79,7 +79,7 @@ ColorCorrectionLookup_t::~ColorCorrectionLookup_t( )
void ColorCorrectionLookup_t::AllocTexture() void ColorCorrectionLookup_t::AllocTexture()
{ {
char name[64]; char name[64];
sprintf( name, "ColorCorrection - %d", m_Handle ); sprintf( name, "ColorCorrection - %p", m_Handle );
m_pColorCorrectionTexture = ITextureInternal::CreateProceduralTexture( name, TEXTURE_GROUP_OTHER, m_pColorCorrectionTexture = ITextureInternal::CreateProceduralTexture( name, TEXTURE_GROUP_OTHER,
COLOR_CORRECTION_TEXTURE_SIZE, COLOR_CORRECTION_TEXTURE_SIZE, COLOR_CORRECTION_TEXTURE_SIZE, IMAGE_FORMAT_BGRX8888, COLOR_CORRECTION_TEXTURE_SIZE, COLOR_CORRECTION_TEXTURE_SIZE, COLOR_CORRECTION_TEXTURE_SIZE, IMAGE_FORMAT_BGRX8888,

8
public/basehandle.h

@ -30,7 +30,7 @@ public:
CBaseHandle(); CBaseHandle();
CBaseHandle( const CBaseHandle &other ); CBaseHandle( const CBaseHandle &other );
CBaseHandle( unsigned long value ); CBaseHandle( uintp value );
CBaseHandle( int iEntry, int iSerialNumber ); CBaseHandle( int iEntry, int iSerialNumber );
void Init( int iEntry, int iSerialNumber ); void Init( int iEntry, int iSerialNumber );
@ -63,7 +63,7 @@ public:
protected: protected:
// The low NUM_SERIAL_BITS hold the index. If this value is less than MAX_EDICTS, then the entity is networkable. // The low NUM_SERIAL_BITS hold the index. If this value is less than MAX_EDICTS, then the entity is networkable.
// The high NUM_SERIAL_NUM_BITS bits are the serial number. // The high NUM_SERIAL_NUM_BITS bits are the serial number.
unsigned long m_Index; uintp m_Index;
}; };
@ -80,7 +80,7 @@ inline CBaseHandle::CBaseHandle( const CBaseHandle &other )
m_Index = other.m_Index; m_Index = other.m_Index;
} }
inline CBaseHandle::CBaseHandle( unsigned long value ) inline CBaseHandle::CBaseHandle( uintp value )
{ {
m_Index = value; m_Index = value;
} }
@ -150,7 +150,7 @@ inline bool CBaseHandle::operator <( const CBaseHandle &other ) const
inline bool CBaseHandle::operator <( const IHandleEntity *pEntity ) const inline bool CBaseHandle::operator <( const IHandleEntity *pEntity ) const
{ {
unsigned long otherIndex = (pEntity) ? pEntity->GetRefEHandle().m_Index : INVALID_EHANDLE_INDEX; uintp otherIndex = (pEntity) ? pEntity->GetRefEHandle().m_Index : INVALID_EHANDLE_INDEX;
return m_Index < otherIndex; return m_Index < otherIndex;
} }

2
public/saverestoretypes.h

@ -102,7 +102,7 @@ struct levellist_t
struct EHandlePlaceholder_t // Engine does some of the game writing (alas, probably shouldn't), but can't see ehandle.h struct EHandlePlaceholder_t // Engine does some of the game writing (alas, probably shouldn't), but can't see ehandle.h
{ {
unsigned long i; uintp i;
}; };
//------------------------------------- //-------------------------------------

4
studiorender/r_studiodraw.cpp

@ -1138,7 +1138,7 @@ public:
if ( nHasSIMD ) if ( nHasSIMD )
{ {
// Precaches the data // Precaches the data
_mm_prefetch( (char*)((int)pGroupToMesh & (~0x1F)), _MM_HINT_NTA ); _mm_prefetch( (char*)((intp)pGroupToMesh & (~0x1F)), _MM_HINT_NTA );
} }
#endif #endif
for ( int i = 0; i < PREFETCH_VERT_COUNT; ++i ) for ( int i = 0; i < PREFETCH_VERT_COUNT; ++i )
@ -1165,7 +1165,7 @@ public:
if ( nHasSIMD ) if ( nHasSIMD )
{ {
char *pMem = (char*)&pGroupToMesh[j + PREFETCH_VERT_COUNT + 1]; char *pMem = (char*)&pGroupToMesh[j + PREFETCH_VERT_COUNT + 1];
_mm_prefetch( (char*)((int)pMem & (~0x1F)), _MM_HINT_NTA ); _mm_prefetch( (char*)((intp)pMem & (~0x1F)), _MM_HINT_NTA );
} }
#endif #endif
idx = j & (PREFETCH_VERT_COUNT-1); idx = j & (PREFETCH_VERT_COUNT-1);

3
wscript

@ -394,7 +394,8 @@ def configure(conf):
'/Zc:forScope', '/Zc:forScope',
'/Zc:wchar_t', '/Zc:wchar_t',
'/GR', '/GR',
'/TP' '/TP',
'/EHsc'
] ]
if conf.options.BUILD_TYPE == 'debug': if conf.options.BUILD_TYPE == 'debug':

Loading…
Cancel
Save