Minimal changes to compile T3D on WIN64.

This commit is contained in:
LuisAntonRebollo 2014-09-14 21:39:56 +02:00
parent a93f179138
commit 8ed0f508ca
13 changed files with 161 additions and 18 deletions

View file

@ -113,7 +113,7 @@ static UINT_PTR CALLBACK FolderHookProc(HWND hdlg, UINT uMsg, WPARAM wParam, LPA
SendMessage(hParent, CDM_HIDECONTROL, cmb1, 0);
SendMessage(hParent, CDM_HIDECONTROL, stc2, 0);
LONG oldProc = SetWindowLong(hParent, GWL_WNDPROC, (LONG)OKBtnFolderHackProc);
LONG oldProc = SetWindowLong(hParent, GWLP_WNDPROC, (LONG)OKBtnFolderHackProc);
SetProp(hParent, dT("OldWndProc"), (HANDLE)oldProc);
SetProp(hParent, dT("OFN"), (HANDLE)lpofn);
}

View file

@ -116,7 +116,7 @@ void PlatformFont::enumeratePlatformFonts( Vector<StringTableEntry>& fonts, UTF1
EnumFontFamilies( fontHDC, fontFamily, (FONTENUMPROC)EnumFamCallBack, (LPARAM)&fonts );
}
PlatformFont *createPlatformFont(const char *name, U32 size, U32 charset /* = TGE_ANSI_CHARSET */)
PlatformFont *createPlatformFont(const char *name, dsize_t size, U32 charset /* = TGE_ANSI_CHARSET */)
{
PlatformFont *retFont = new WinFont;
@ -139,7 +139,7 @@ WinFont::~WinFont()
}
}
bool WinFont::create(const char *name, U32 size, U32 charset /* = TGE_ANSI_CHARSET */)
bool WinFont::create(const char *name, dsize_t size, U32 charset /* = TGE_ANSI_CHARSET */)
{
if(name == NULL || size < 1)
return false;

View file

@ -92,6 +92,23 @@ void Platform::setMathControlStateKnown()
}
}
#else
U32 Platform::getMathControlState( )
{
// @todo x64 See http://msdn.microsoft.com/en-us/library/c9676k6h.aspx
return 0;
}
void Platform::setMathControlState( U32 state )
{
// @todo x64 See http://msdn.microsoft.com/en-us/library/c9676k6h.aspx
}
void Platform::setMathControlStateKnown( )
{
// @todo x64 See http://msdn.microsoft.com/en-us/library/c9676k6h.aspx
}
#endif

View file

@ -23,26 +23,26 @@
#include "platformWin32/platformWin32.h"
#include <xmmintrin.h>
void* dMemcpy(void *dst, const void *src, unsigned size)
void* dMemcpy(void *dst, const void *src, dsize_t size)
{
return memcpy(dst,src,size);
}
//--------------------------------------
void* dMemmove(void *dst, const void *src, unsigned size)
void* dMemmove(void *dst, const void *src, dsize_t size)
{
return memmove(dst,src,size);
}
//--------------------------------------
void* dMemset(void *dst, S32 c, unsigned size)
void* dMemset(void *dst, S32 c, dsize_t size)
{
return memset(dst,c,size);
}
//--------------------------------------
S32 dMemcmp(const void *ptr1, const void *ptr2, unsigned len)
S32 dMemcmp(const void *ptr1, const void *ptr2, dsize_t len)
{
return memcmp(ptr1, ptr2, len);
}

View file

@ -0,0 +1,119 @@
// Original code is:
// Copyright (c) 2005 Intel Corporation
// All Rights Reserved
//
// CPUCount.cpp : Detects three forms of hardware multi-threading support across IA-32 platform
// The three forms of HW multithreading are: Multi-processor, Multi-core, and
// HyperThreading Technology.
// This application enumerates all the logical processors enabled by OS and BIOS,
// determine the HW topology of these enabled logical processors in the system
// using information provided by CPUID instruction.
// A multi-processing system can support any combination of the three forms of HW
// multi-threading support. The relevant topology can be identified using a
// three level decomposition of the "initial APIC ID" into
// Package_id, core_id, and SMT_id. Such decomposition provides a three-level map of
// the topology of hardware resources and
// allow multi-threaded software to manage shared hardware resources in
// the platform to reduce resource contention
// Multicore detection algorithm for processor and cache topology requires
// all leaf functions of CPUID instructions be available. System administrator
// must ensure BIOS settings is not configured to restrict CPUID functionalities.
//-------------------------------------------------------------------------------------------------
#include "platform/platform.h"
#if defined( TORQUE_OS_WIN )
#include "platform/platformCPUCount.h"
#include <windows.h>
#include <intrin.h>
#include <stdio.h>
#include <assert.h>
namespace CPUInfo {
// based on http://msdn.microsoft.com/en-us/library/ms683194.aspx
// Helper function to count set bits in the processor mask.
DWORD CountSetBits( ULONG_PTR bitMask )
{
DWORD LSHIFT = sizeof( ULONG_PTR ) * 8 - 1;
DWORD bitSetCount = 0;
ULONG_PTR bitTest = (ULONG_PTR)1 << LSHIFT;
DWORD i;
for( i = 0; i <= LSHIFT; ++i )
{
bitSetCount += ((bitMask & bitTest) ? 1 : 0);
bitTest /= 2;
}
return bitSetCount;
}
EConfig CPUCount( U32& TotAvailLogical, U32& TotAvailCore, U32& PhysicalNum )
{
EConfig StatusFlag = CONFIG_UserConfigIssue;
TotAvailLogical = 0;
TotAvailCore = 0;
PhysicalNum = 0;
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer = NULL;
DWORD returnLength = 0;
// get buffer length
DWORD rc = GetLogicalProcessorInformation( buffer, &returnLength );
buffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc( returnLength );
rc = GetLogicalProcessorInformation( buffer, &returnLength );
if( FALSE == rc )
{
free( buffer );
return StatusFlag;
}
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = buffer;
DWORD byteOffset = 0;
while( byteOffset + sizeof( SYSTEM_LOGICAL_PROCESSOR_INFORMATION ) <= returnLength )
{
switch( ptr->Relationship )
{
case RelationProcessorCore:
TotAvailCore++;
// A hyperthreaded core supplies more than one logical processor.
TotAvailLogical += CountSetBits( ptr->ProcessorMask );
break;
case RelationProcessorPackage:
// Logical processors share a physical package.
PhysicalNum++;
break;
default:
break;
}
byteOffset += sizeof( SYSTEM_LOGICAL_PROCESSOR_INFORMATION );
ptr++;
}
free( buffer );
StatusFlag = CONFIG_SingleCoreAndHTNotCapable;
if( TotAvailCore == 1 && TotAvailLogical > TotAvailCore )
StatusFlag = CONFIG_SingleCoreHTEnabled;
else if( TotAvailCore > 1 && TotAvailLogical == TotAvailCore )
StatusFlag = CONFIG_MultiCoreAndHTNotCapable;
else if( TotAvailCore > 1 && TotAvailLogical > TotAvailCore )
StatusFlag = CONFIG_MultiCoreAndHTEnabled;
return StatusFlag;
}
} // namespace CPUInfo
#endif

View file

@ -25,7 +25,10 @@
#include "core/stringTable.h"
#include "core/strings/unicode.h"
#ifndef TORQUE_OS_WIN64
typedef long SHANDLE_PTR;
#endif
#include <shlobj.h>
#include <windows.h>
#include <lmcons.h>