From 6d21d10cb458b3a14c25deb006f0199f8a01e9cb Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Tue, 30 Apr 2013 18:21:21 -0700 Subject: [PATCH] add a temporary Bullet 2.x patch to make the Gpu demo work --- bullet2.patch | 462 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 462 insertions(+) create mode 100644 bullet2.patch diff --git a/bullet2.patch b/bullet2.patch new file mode 100644 index 000000000..4d0c74681 --- /dev/null +++ b/bullet2.patch @@ -0,0 +1,462 @@ +Index: build/findOpenCL.lua +=================================================================== +--- build/findOpenCL.lua (revision 2640) ++++ build/findOpenCL.lua (working copy) +@@ -1,5 +1,14 @@ +- -- todo: add Apple OpenCL environment vars + ++ ++ function findOpenCL_Apple() ++ if os.is("macosx") then ++ return true ++ else ++ return false ++ end ++ end ++ ++ + function findOpenCL_AMD() + local amdopenclpath = os.getenv("AMDAPPSDKROOT") + if (amdopenclpath) then +@@ -17,13 +26,33 @@ + end + + function findOpenCL_Intel() +- local intelopenclpath = os.getenv("INTELOCLSDKROOT") +- if (intelopenclpath) then ++ if os.is("Windows") then ++ local intelopenclpath = os.getenv("INTELOCLSDKROOT") ++ if (intelopenclpath) then + return true ++ end + end ++ if os.is("Linux") then ++ local intelsdk = io.open("/usr/include/CL/opencl.h","r") ++ if (intelsdk) then ++ return true; ++ end ++ end + return false + end +- ++ ++ function initOpenCL_Apple() ++ configuration{} ++ includedirs { ++ "/System/Library/Frameworks/OpenCL.framework" ++ } ++ libdirs "/System/Library/Frameworks/OpenCL.framework" ++ links ++ { ++ "OpenCL.framework" ++ } ++ end ++ + function initOpenCL_AMD() + configuration {} + local amdopenclpath = os.getenv("AMDAPPSDKROOT") +@@ -65,6 +94,7 @@ + + function initOpenCL_Intel() + configuration {} ++ if os.is("Windows") then + local intelopenclpath = os.getenv("INTELOCLSDKROOT") + if (intelopenclpath) then + defines { "ADL_ENABLE_CL" , "CL_PLATFORM_INTEL"} +@@ -79,6 +109,43 @@ + links {"OpenCL"} + return true + end ++ end ++ if os.is("Linux") then ++ defines { "ADL_ENABLE_CL" , "CL_PLATFORM_INTEL"} ++ configuration {} ++ links {"OpenCL"} ++ end + return false + end +- +\ No newline at end of file ++ ++ function findOpenCL (vendor ) ++ if vendor=="AMD" then ++ return findOpenCL_AMD() ++ end ++ if vendor=="NVIDIA" then ++ return findOpenCL_NVIDIA() ++ end ++ if vendor=="Intel" then ++ return findOpenCL_Intel() ++ end ++ if vendor=="Apple" then ++ return findOpenCL_Apple() ++ end ++ return false ++ end ++ ++ function initOpenCL ( vendor ) ++ if vendor=="AMD" then ++ initOpenCL_AMD() ++ end ++ if vendor=="NVIDIA" then ++ return initOpenCL_NVIDIA() ++ end ++ if vendor=="Intel" then ++ initOpenCL_Intel() ++ end ++ if vendor=="Apple" then ++ return initOpenCL_Apple() ++ end ++ end ++ +Index: build/premake4.lua +=================================================================== +--- build/premake4.lua (revision 2640) ++++ build/premake4.lua (working copy) +@@ -1,102 +1,47 @@ +---add the 0 so the solution comes first in the directory (when sorted on name) +---print "uncomment this hello premake4 world for debugging the script" + +-solution "0BulletSolution" ++ solution "0MySolution" + +- newoption { +- trigger = "ios", +- description = "Enable iOS target (requires xcode4)" +- } +- +- newoption { +- trigger = "without-demos", +- description = "Disable demos and extras" +- } ++ -- Multithreaded compiling ++ if _ACTION == "vs2010" or _ACTION=="vs2008" then ++ buildoptions { "/MP" } ++ end ++ ++ act = "" ++ ++ if _ACTION then ++ act = _ACTION ++ end + +- newoption { +- trigger = "with-double-precision", +- description = "Enable double precision build" +- } + +- +- newoption { +- trigger = "with-nacl", +- description = "Enable Native Client build" +- } ++ newoption ++ { ++ trigger = "ios", ++ description = "Enable iOS target (requires xcode4)" ++ } ++ ++ newoption ++ { ++ trigger = "bullet2gpu", ++ description = "Enable Bullet 2.x GPU using b3GpuDynamicsWorld bridge to Bullet 3.x" ++ } + +- newoption { +- trigger = "with-dx11", +- description = "Enable DirectX11 build" +- } +- +- newoption { +- trigger = "with-opencl", +- description = "Enable OpenCL builds (various SDKs)" +- } +- +- newoption { +- trigger = "with-opencl-amd", +- description = "Enable OpenCL builds (AMD SDK)" +- } +- +- newoption { +- trigger = "with-opencl-intel", +- description = "Enable OpenCL builds (Intel SDK)" +- } +- newoption { +- trigger = "with-opencl-nvidia", +- description = "Enable OpenCL builds (NVIDIA SDK)" +- } +- +- + configurations {"Release", "Debug"} + configuration "Release" +- flags { "Optimize", "EnableSSE", "StaticRuntime", "NoMinimalRebuild", "FloatFast"} ++ flags { "Optimize", "EnableSSE","StaticRuntime", "NoMinimalRebuild", "FloatFast"} + configuration "Debug" ++ defines {"_DEBUG=1"} + flags { "Symbols", "StaticRuntime" , "NoMinimalRebuild", "NoEditAndContinue" ,"FloatFast"} + +- platforms {"x32", "x64"} +- --platforms {"x32"} +- +- configuration {"Windows"} +- defines { "_CRT_SECURE_NO_WARNINGS","_CRT_SECURE_NO_DEPRECATE"} +- +- configuration{} +- +- postfix=""; +- +- if _OPTIONS["with-double-precision"] then +- defines {"BT_USE_DOUBLE_PRECISION"} +- end +- +- if _ACTION == "xcode4" then +- if _OPTIONS["ios"] then +- postfix = "ios"; +- xcodebuildsettings +- { +- 'INFOPLIST_FILE = "../../Test/Info.plist"', +- 'CODE_SIGN_IDENTITY = "iPhone Developer"', +- "SDKROOT = iphoneos", +- 'ARCHS = "armv7"', +- 'TARGETED_DEVICE_FAMILY = "1,2"', +- 'VALID_ARCHS = "armv7"', +- } +- else +- xcodebuildsettings +- { +- 'ARCHS = "$(ARCHS_STANDARD_32_BIT) $(ARCHS_STANDARD_64_BIT)"', +- 'VALID_ARCHS = "x86_64 i386"', +- } ++ if os.is("Linux") then ++ if os.is64bit() then ++ platforms {"x64"} ++ else ++ platforms {"x32"} + end + else +- ++ platforms {"x32", "x64"} + end + +- act = "" +- +- if _ACTION then +- act = _ACTION +- end + configuration {"x32"} + targetsuffix ("_" .. act) + configuration "x64" +@@ -110,89 +55,91 @@ + + configuration{} + ++ postfix="" + ++ if _ACTION == "xcode4" then ++ if _OPTIONS["ios"] then ++ postfix = "ios"; ++ xcodebuildsettings ++ { ++ 'CODE_SIGN_IDENTITY = "iPhone Developer"', ++ "SDKROOT = iphoneos", ++ 'ARCHS = "armv7"', ++ 'TARGETED_DEVICE_FAMILY = "1,2"', ++ 'VALID_ARCHS = "armv7"', ++ } ++ else ++ xcodebuildsettings ++ { ++ 'ARCHS = "$(ARCHS_STANDARD_32_BIT) $(ARCHS_STANDARD_64_BIT)"', ++ 'VALID_ARCHS = "x86_64 i386"', ++ } ++ end ++ end + +-if not _OPTIONS["with-nacl"] then +- +- flags { "NoRTTI"} ++ ++ flags { "NoRTTI", "NoExceptions"} ++ defines { "_HAS_EXCEPTIONS=0" } + targetdir "../bin" ++ location("./" .. act .. postfix) + +- -- Disable exception handling on MSVC 2008 and higher. MSVC 2005 without service pack has some linker issue (ConvexDecompositionDemo uses STL through HACD library) +- if _ACTION == "vs2010" or _ACTION=="vs2008" then +- flags { "NoExceptions"} +- defines { "_HAS_EXCEPTIONS=0" } +- end ++ ++ projectRootDir = os.getcwd() .. "/../" ++ print("Project root directroy: " .. projectRootDir); + +- -- Multithreaded compiling +- if _ACTION == "vs2010" then +- buildoptions { "/MP" } +- end +- +- +-else +- targetdir "../bin_html" +-end +- +- + dofile ("findOpenCL.lua") + dofile ("findDirectX11.lua") ++ dofile ("findOpenGLGlewGlut.lua") + + language "C++" + +- location("./" .. act .. postfix) + ++ ++ if not _OPTIONS["ios"] then ++-- include "../demo/gpudemo" ++-- include "../btgui/MidiTest" ++-- include "../opencl/vector_add_simplified" ++-- include "../opencl/vector_add" ++ include "../btgui/Gwen" ++ include "../btgui/GwenOpenGLTest" ++ ++ include "../test/OpenCL/BasicInitialize" ++-- include "../test/OpenCL/BroadphaseCollision" ++-- include "../test/OpenCL/NarrowphaseCollision" ++ include "../test/OpenCL/ParallelPrimitives" ++ include "../test/OpenCL/RadixSortBenchmark" ++ include "../test/OpenCL/BitonicSort" ++ ++ include "../src/Bullet3Dynamics" ++ include "../src/Bullet3Common" ++ include "../src/Bullet3Geometry" ++ include "../src/Bullet3Collision" ++ include "../src/Bullet3Serialize/Bullet2FileLoader" + +- if _OPTIONS["with-dx11"] then +- include "../Demos/DX11ClothDemo" +- include "../src/BulletMultiThreaded/GpuSoftBodySolvers/DX11" +- end ++ include "../src/Bullet3OpenCL" ++ include "../Demos3/GpuDemos" ++ ++-- include "../demo/gpu_initialize" ++-- include "../opencl/lds_bank_conflict" ++-- include "../opencl/reduce" ++-- include "../btgui/OpenGLTrueTypeFont" ++-- include "../btgui/OpenGLWindow" ++-- include "../demo/ObjLoader" + +---choose any OpenCL sdk that is installed on the system +- if _OPTIONS["with-opencl"] then +- include "../Demos/OpenCLClothDemo/AMD" +- include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD" +- include "../Demos/OpenCLClothDemo/NVidia" +- include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia" +- include "../Demos/OpenCLClothDemo/Intel" +- include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel" +- end ++ ++-- include "../test/b3DynamicBvhBroadphase" ++ + +---choose a particular OpenCL sdk, this is useful for distributing project files that just work for one OpenCL SDK +- if _OPTIONS["with-opencl-amd"] then +- include "../Demos/OpenCLClothDemo/AMD" +- include "../Demos/OpenGL" +- include "../Demos/SoftDemo/AMD" +- include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD" +- end +- +- if _OPTIONS["with-opencl-intel"] then +- include "../Demos/OpenCLClothDemo/Intel" +- include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel" +- end ++ + +- if _OPTIONS["with-opencl-nvidia"] then +- include "../Demos/OpenCLClothDemo/NVidia" +- include "../src/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia" ++ if _OPTIONS["bullet2gpu"] then ++ include "../src/LinearMath" ++ include "../src/BulletCollision" ++ include "../src/BulletDynamics" ++ include "../src/BulletSoftBody" ++ include "../Demos/HelloWorld" ++ ++ include "../Demos3" + end + +- if not _OPTIONS["without-demos"] then +- if not _OPTIONS["ios"] then +- include "../Demos" + end +- include "../Extras" +- end +- +- +- if _OPTIONS["with-nacl"] then +- include "../Demos/NativeClient" +- else +- include "../src/LinearMath" +- include "../src/BulletCollision" +- include "../src/BulletDynamics" +- include "../src/BulletSoftBody" +- end +- +- include "../Test" +- include "../Demos/HelloWorld" +- include "../Demos/Benchmarks" +- +Index: build/vs2010.bat +=================================================================== +--- build/vs2010.bat (revision 2640) ++++ build/vs2010.bat (working copy) +@@ -1,4 +1,6 @@ + ++rem premake4 --with-pe vs2010 + premake4 vs2010 + ++mkdir vs2010\cache + pause +\ No newline at end of file +Index: Demos/OpenGL/DemoApplication.cpp +=================================================================== +--- Demos/OpenGL/DemoApplication.cpp (revision 2640) ++++ Demos/OpenGL/DemoApplication.cpp (working copy) +@@ -1182,8 +1182,8 @@ + } + } + +- btVector3 aabbMin,aabbMax; +- m_dynamicsWorld->getBroadphase()->getBroadphaseAabb(aabbMin,aabbMax); ++ btVector3 aabbMin(0,0,0),aabbMax(0,0,0); ++ //m_dynamicsWorld->getBroadphase()->getBroadphaseAabb(aabbMin,aabbMax); + + aabbMin-=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); + aabbMax+=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); +Index: src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +=================================================================== +--- src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp (revision 2640) ++++ src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp (working copy) +@@ -73,7 +73,7 @@ + m_debugDrawer(0), + m_forceUpdateAllAabbs(true) + { +- m_stackAlloc = collisionConfiguration->getStackAllocator(); ++ m_stackAlloc = 0;//collisionConfiguration->getStackAllocator(); + m_dispatchInfo.m_stackAllocator = m_stackAlloc; + } + +Index: src/BulletDynamics/Dynamics/btDynamicsWorld.h +=================================================================== +--- src/BulletDynamics/Dynamics/btDynamicsWorld.h (revision 2640) ++++ src/BulletDynamics/Dynamics/btDynamicsWorld.h (working copy) +@@ -33,7 +33,8 @@ + BT_SIMPLE_DYNAMICS_WORLD=1, + BT_DISCRETE_DYNAMICS_WORLD=2, + BT_CONTINUOUS_DYNAMICS_WORLD=3, +- BT_SOFT_RIGID_DYNAMICS_WORLD=4 ++ BT_SOFT_RIGID_DYNAMICS_WORLD=4, ++ BT_GPU_DYNAMICS_WORLD=5 + }; + + ///The btDynamicsWorld is the interface class for several dynamics implementation, basic, discrete, parallel, and continuous etc.