fix Mac OSX build

This commit is contained in:
Erwin Coumans
2013-06-04 09:09:10 -07:00
parent b36eba864f
commit 4dd529513f
6 changed files with 95 additions and 67 deletions

View File

@@ -3,19 +3,20 @@
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
void b3PrintfFuncDefault(const char* msg) void b3PrintfFuncDefault(const char* msg)
{ {
printf(msg); printf("%s",msg);
} }
void b3WarningMessageFuncDefault(const char* msg) void b3WarningMessageFuncDefault(const char* msg)
{ {
printf(msg); printf("%s",msg);
} }
void b3ErrorMessageFuncDefault(const char* msg) void b3ErrorMessageFuncDefault(const char* msg)
{ {
printf(msg); printf("%s",msg);
} }
static b3PrintfFunc* b3s_printfFunc = b3PrintfFuncDefault; static b3PrintfFunc* b3s_printfFunc = b3PrintfFuncDefault;
@@ -37,13 +38,19 @@ void b3SetCustomErrorMessageFunc(b3PrintfFunc* errorMessageFunc)
b3s_errorMessageFunc = errorMessageFunc; b3s_errorMessageFunc = errorMessageFunc;
} }
#define B3_MAX_DEBUG_STRING_LENGTH 32
void b3OutputPrintfVarArgsInternal(const char *str, ...) void b3OutputPrintfVarArgsInternal(const char *str, ...)
{ {
char strDebug[1024]={0}; char strDebug[B3_MAX_DEBUG_STRING_LENGTH]={0};
va_list argList; va_list argList;
va_start(argList, str); va_start(argList, str);
vsprintf_s(strDebug,str,argList); #ifdef _WIN32
vsprintf_s(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
#else
vsnprintf(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
#endif
(b3s_printfFunc)(strDebug); (b3s_printfFunc)(strDebug);
va_end(argList); va_end(argList);
} }
@@ -52,18 +59,30 @@ void b3OutputWarningMessageVarArgsInternal(const char *str, ...)
char strDebug[1024]={0}; char strDebug[1024]={0};
va_list argList; va_list argList;
va_start(argList, str); va_start(argList, str);
vsprintf_s(strDebug,str,argList); #ifdef _WIN32
vsprintf_s(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
#else
vsnprintf(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
#endif
(b3s_warningMessageFunc)(strDebug); (b3s_warningMessageFunc)(strDebug);
va_end(argList); va_end(argList);
} }
void b3OutputErrorMessageVarArgsInternal(const char *str, ...) void b3OutputErrorMessageVarArgsInternal(const char *str, ...)
{ {
char strDebug[1024]={0}; char strDebug[1024]={0};
va_list argList; va_list argList;
va_start(argList, str); va_start(argList, str);
vsprintf_s(strDebug,str,argList); #ifdef _WIN32
vsprintf_s(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
#else
vsnprintf(strDebug,B3_MAX_DEBUG_STRING_LENGTH,str,argList);
#endif
(b3s_errorMessageFunc)(strDebug); (b3s_errorMessageFunc)(strDebug);
va_end(argList); va_end(argList);
} }
#ifndef _WIN32
#undef vsprintf_s
#endif

View File

@@ -310,8 +310,6 @@ inline __m128 operator * (const __m128 A, const __m128 B)
#define b3CastdTo128f(a) ((__m128) (a)) #define b3CastdTo128f(a) ((__m128) (a))
#define b3CastdTo128i(a) ((__m128i)(a)) #define b3CastdTo128i(a) ((__m128i)(a))
#define b3Assign128(r0,r1,r2,r3) (__m128){r0,r1,r2,r3} #define b3Assign128(r0,r1,r2,r3) (__m128){r0,r1,r2,r3}
#define B3_INFINITY INFINITY
#define B3_NAN NAN
#endif//_WIN32 #endif//_WIN32
#endif //B3_USE_SSE_IN_API #endif //B3_USE_SSE_IN_API

View File

@@ -32,7 +32,7 @@ b3BoundSearchCL::b3BoundSearchCL(cl_context ctx, cl_device_id device, cl_command
{ {
const char* additionalMacros = ""; const char* additionalMacros = "";
const char* srcFileNameForCaching=""; //const char* srcFileNameForCaching="";
cl_int pErrNum; cl_int pErrNum;
const char* kernelSource = boundSearchKernelsCL; const char* kernelSource = boundSearchKernelsCL;

View File

@@ -7,6 +7,9 @@
#include "b3OpenCLArray.h" #include "b3OpenCLArray.h"
#include <stdio.h> #include <stdio.h>
#define B3_DEBUG_SERIALIZE_CL
#ifdef _WIN32 #ifdef _WIN32
#pragma warning(disable :4996) #pragma warning(disable :4996)
#endif #endif
@@ -33,9 +36,8 @@ class b3LauncherCL
int m_idx; int m_idx;
b3AlignedObjectArray<b3KernelArgData> m_kernelArguments; b3AlignedObjectArray<b3KernelArgData> m_kernelArguments;
int m_serializationSizeInBytes; int m_serializationSizeInBytes;
bool m_enableSerialization;
public: public:
@@ -44,7 +46,8 @@ class b3LauncherCL
b3LauncherCL(cl_command_queue queue, cl_kernel kernel) b3LauncherCL(cl_command_queue queue, cl_kernel kernel)
:m_commandQueue(queue), :m_commandQueue(queue),
m_kernel(kernel), m_kernel(kernel),
m_idx(0) m_idx(0),
m_enableSerialization(false)
{ {
m_serializationSizeInBytes = sizeof(int); m_serializationSizeInBytes = sizeof(int);
} }
@@ -59,30 +62,31 @@ class b3LauncherCL
inline void setBuffer( cl_mem clBuffer) inline void setBuffer( cl_mem clBuffer)
{ {
if (m_enableSerialization)
{
b3KernelArgData kernelArg;
kernelArg.m_argIndex = m_idx;
kernelArg.m_isBuffer = 1;
kernelArg.m_clBuffer = clBuffer;
b3KernelArgData kernelArg; cl_mem_info param_name = CL_MEM_SIZE;
kernelArg.m_argIndex = m_idx; size_t param_value;
kernelArg.m_isBuffer = 1; size_t sizeInBytes = sizeof(size_t);
kernelArg.m_clBuffer = clBuffer; size_t actualSizeInBytes;
cl_int err;
err = clGetMemObjectInfo ( kernelArg.m_clBuffer,
param_name,
sizeInBytes,
&param_value,
&actualSizeInBytes);
cl_mem_info param_name = CL_MEM_SIZE; b3Assert( err == CL_SUCCESS );
size_t param_value; kernelArg.m_argSizeInBytes = param_value;
size_t sizeInBytes = sizeof(size_t);
size_t actualSizeInBytes;
cl_int err;
err = clGetMemObjectInfo ( kernelArg.m_clBuffer,
param_name,
sizeInBytes,
&param_value,
&actualSizeInBytes);
b3Assert( err == CL_SUCCESS );
kernelArg.m_argSizeInBytes = param_value;
m_kernelArguments.push_back(kernelArg);
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
m_serializationSizeInBytes+=param_value;
m_kernelArguments.push_back(kernelArg);
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
m_serializationSizeInBytes+=param_value;
}
cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &clBuffer); cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &clBuffer);
b3Assert( status == CL_SUCCESS ); b3Assert( status == CL_SUCCESS );
} }
@@ -92,29 +96,31 @@ class b3LauncherCL
{ {
for(int i=0; i<n; i++) for(int i=0; i<n; i++)
{ {
b3KernelArgData kernelArg; if (m_enableSerialization)
kernelArg.m_argIndex = m_idx; {
kernelArg.m_isBuffer = 1; b3KernelArgData kernelArg;
kernelArg.m_clBuffer = buffInfo[i].m_clBuffer; kernelArg.m_argIndex = m_idx;
kernelArg.m_isBuffer = 1;
kernelArg.m_clBuffer = buffInfo[i].m_clBuffer;
cl_mem_info param_name = CL_MEM_SIZE; cl_mem_info param_name = CL_MEM_SIZE;
size_t param_value; size_t param_value;
size_t sizeInBytes = sizeof(size_t); size_t sizeInBytes = sizeof(size_t);
size_t actualSizeInBytes; size_t actualSizeInBytes;
cl_int err; cl_int err;
err = clGetMemObjectInfo ( kernelArg.m_clBuffer, err = clGetMemObjectInfo ( kernelArg.m_clBuffer,
param_name, param_name,
sizeInBytes, sizeInBytes,
&param_value, &param_value,
&actualSizeInBytes); &actualSizeInBytes);
b3Assert( err == CL_SUCCESS ); b3Assert( err == CL_SUCCESS );
kernelArg.m_argSizeInBytes = param_value; kernelArg.m_argSizeInBytes = param_value;
m_kernelArguments.push_back(kernelArg);
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
m_serializationSizeInBytes+=param_value;
m_kernelArguments.push_back(kernelArg);
m_serializationSizeInBytes+= sizeof(b3KernelArgData);
m_serializationSizeInBytes+=param_value;
}
cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &buffInfo[i].m_clBuffer); cl_int status = clSetKernelArg( m_kernel, m_idx++, sizeof(cl_mem), &buffInfo[i].m_clBuffer);
b3Assert( status == CL_SUCCESS ); b3Assert( status == CL_SUCCESS );
} }
@@ -296,9 +302,9 @@ class b3LauncherCL
unsigned char* ptr = (unsigned char*)&buf[i]; unsigned char* ptr = (unsigned char*)&buf[i];
*ptr = 0xff; *ptr = 0xff;
} }
int actualWrite = serializeArguments(buf,buffSize); // int actualWrite = serializeArguments(buf,buffSize);
unsigned char* cptr = (unsigned char*)&buf[buffSize]; // unsigned char* cptr = (unsigned char*)&buf[buffSize];
// printf("buf[buffSize] = %d\n",*cptr); // printf("buf[buffSize] = %d\n",*cptr);
assert(buf[buffSize]==0xff);//check for buffer overrun assert(buf[buffSize]==0xff);//check for buffer overrun
@@ -357,6 +363,12 @@ class b3LauncherCL
b3Assert( status == CL_SUCCESS ); b3Assert( status == CL_SUCCESS );
} }
void enableSerialization(bool serialize)
{
m_enableSerialization = serialize;
}
}; };

View File

@@ -37,7 +37,6 @@ b3RadixSort32CL::b3RadixSort32CL(cl_context ctx, cl_device_id device, cl_command
m_fill = new b3FillCL(ctx,device,queue); m_fill = new b3FillCL(ctx,device,queue);
const char* additionalMacros = ""; const char* additionalMacros = "";
const char* srcFileNameForCaching="";
cl_int pErrNum; cl_int pErrNum;
const char* kernelSource = radixSort32KernelsCL; const char* kernelSource = radixSort32KernelsCL;

View File

@@ -38,8 +38,8 @@ const char* g_deviceName = 0;
void initCL(int preferredDeviceIndex, int preferredPlatformIndex) void initCL(int preferredDeviceIndex, int preferredPlatformIndex)
{ {
void* glCtx=0; //void* glCtx=0;
void* glDC = 0; //void* glDC = 0;
int ciErrNum = 0; int ciErrNum = 0;
//bound search and radix sort only work on GPU right now (assume 32 or 64 width workgroup without barriers) //bound search and radix sort only work on GPU right now (assume 32 or 64 width workgroup without barriers)