-
Notifications
You must be signed in to change notification settings - Fork 35
Description
Building on CentOS v7 using Linux version 3.10.0-327.18.2.el7.x86_64 compiling with gcc version 4.8.5 20150623 I ran into some build problems.
Some minor issues, but the things I had to fix:
1 - Remove shadowing DP_GL_API static bool isMulticastSupported() from dp/gl/RenderTargetFBO.h since its defined in the base class as a virtual method.
2 - ParameterRenderer_Multicast_ interfaces use WGL specific load methods for procs. I just stubbed them out ... this needs to be updated to call GLEW.
3 - DP_ASSERT wasn't defined in many files. Including <dp/Assert.h> fixed things.
4 - dp/sg/animation/LinkManager.h uses unqualified names for Property::Type and TypedPropertyEnum<>. Adding fully qualified namespace fixed this.
5 - It appears you're using a non-standard Lib3DS. Grabbing the lib3ds-20080909.zip (aka v2.0.0-rc1) from the Google Code site and building against that seems to have the right interfaces, but the header filenames don't match. lib3ds-1.3.0 doesn't match at all. Not sure what version you're using.
See below for diff generated from master at the time of this issue report.
`diff --git a/apps/GLUTMinimalMulticast/src/main.cpp b/apps/GLUTMinimalMulticast/src/main.cpp
index e1ab66e..2cd2ac0 100644
--- a/apps/GLUTMinimalMulticast/src/main.cpp
+++ b/apps/GLUTMinimalMulticast/src/main.cpp
@@ -722,7 +722,11 @@ int runApp( options::variables_map const& opts )
int main(int argc, char *argv[])
{
// Enable NVX multicast extension
+#ifdef DP_OS_WINDOWS
_putenv("GL_NVX_LINKED_GPU_MULTICAST=1");
+#else
- putenv("GL_NVX_LINKED_GPU_MULTICAST=1");
+#endif
int result = -1;
try
{
diff --git a/dp/cuda/BufferHost.h b/dp/cuda/BufferHost.h
index 718e839..3681487 100644
--- a/dp/cuda/BufferHost.h
+++ b/dp/cuda/BufferHost.h
@@ -28,6 +28,7 @@
include <dp/cuda/Config.h>
include <dp/cuda/Types.h>
+#include <dp/Assert.h>
namespace dp
{
diff --git a/dp/cuda/src/Buffer3D.cpp b/dp/cuda/src/Buffer3D.cpp
index e784edf..2f25038 100644
--- a/dp/cuda/src/Buffer3D.cpp
+++ b/dp/cuda/src/Buffer3D.cpp
@@ -26,6 +26,7 @@
include <dp/cuda/Buffer3D.h>
include <driver_functions.h>
+#include <dp/Assert.h>
namespace dp
{
diff --git a/dp/gl/RenderTargetFBO.h b/dp/gl/RenderTargetFBO.h
index 826ec37..af786c8 100644
--- a/dp/gl/RenderTargetFBO.h
+++ b/dp/gl/RenderTargetFBO.h
@@ -518,7 +518,8 @@ namespace dp
/** \brief Test it isMulticastSupported
\return true if GL_NVX_linked_gpu_multicast is supported
**/
-
DP_GL_API static bool isMulticastSupported(); -
// DP_GL_API static bool isMulticastSupported(); -
DP_GL_API virtual bool isMulticastSupported() const;/** \brief Set multicast state for this FBO
\param enabled If enabled is true multicast will be enabled, otherwise it'll be disabled
diff --git a/dp/gl/src/Buffer.cpp b/dp/gl/src/Buffer.cpp
index b2ce9e5..8387969 100644
--- a/dp/gl/src/Buffer.cpp
+++ b/dp/gl/src/Buffer.cpp
@@ -25,6 +25,7 @@include <dp/gl/Buffer.h>
+#include <dp/Assert.h>
namespace dp
{
diff --git a/dp/gl/src/RenderTargetFBO.cpp b/dp/gl/src/RenderTargetFBO.cpp
index d6cc1c6..7dc79e0 100644
--- a/dp/gl/src/RenderTargetFBO.cpp
+++ b/dp/gl/src/RenderTargetFBO.cpp
@@ -703,7 +703,7 @@ namespace dp
return /!!GLEW_ARB_framebuffer_object ||/ !!GLEW_EXT_framebuffer_blit;
} -
bool RenderTargetFBO::isMulticastSupported()
-
bool RenderTargetFBO::isMulticastSupported() const
{
return dp::gl::isExtensionExported("GL_NVX_linked_gpu_multicast");
}
diff --git a/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp b/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp
index e27f326..7eba624 100644
--- a/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp
+++ b/dp/rix/gl/src/ParameterRendererBufferAddressRangeMulticast.cpp
@@ -47,9 +47,13 @@ namespace dp
, m_numberOfGPUs(numberOfGPUs)
, m_cacheData(new uint8_t[m_bindingLength])
{
+#ifdef _MFC_VER
glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)wglGetProcAddress("glLGPUNamedBufferSubDataNVX");
assert(glLGPUNamedBufferSubDataNVX && "multicast extension not supported");
glGetIntegerv(GL_MAX_LGPU_GPUS_NVX, (GLint*)(&m_numberOfGPUs));
+#else -
assert(!"multicast extension not supported!");+#endif
}void ParameterRendererBufferAddressRangeMulticast::activate()
diff --git a/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp b/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp
index 17b3f81..dae2132 100644
--- a/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp
+++ b/dp/rix/gl/src/ParameterRendererBufferMulticast.cpp
@@ -40,9 +40,13 @@ namespace dp
, m_containerSize(containerSize)
, m_numberOfGPUs(numberOfGPUs)
{
+#ifdef _MFC_VER
glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)wglGetProcAddress("glLGPUNamedBufferSubDataNVX");
assert(glLGPUNamedBufferSubDataNVX && "multicast extension not supported");
glGetIntegerv(GL_MAX_LGPU_GPUS_NVX, (GLint*)(&m_numberOfGPUs));
+#else -
assert(!"multicast extension not supported!");+#endif
}void ParameterRendererBufferMulticast::render( void const* cache )
diff --git a/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp b/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp
index a30ef67..5fe3212 100644
--- a/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp
+++ b/dp/rix/gl/src/ParameterRendererBufferRangeMulticast.cpp
@@ -45,9 +45,14 @@ namespace dp
, m_containerSize(containerSize)
, m_cacheData( new uint8_t[bindingLength] )
{
+
+#ifdef _MFC_VER
glLGPUNamedBufferSubDataNVX = (PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)wglGetProcAddress("glLGPUNamedBufferSubDataNVX");
assert(glLGPUNamedBufferSubDataNVX && "multicast extension not supported");
glGetIntegerv(GL_MAX_LGPU_GPUS_NVX, (GLint*)(&m_numberOfGPUs));
+#else -
assert(!"multicast extension not supported!");+#endif
}void ParameterRendererBufferRangeMulticast::activate()
diff --git a/dp/sg/animation/LinkManager.h b/dp/sg/animation/LinkManager.h
index 0c36aae..662c790 100644
--- a/dp/sg/animation/LinkManager.h
+++ b/dp/sg/animation/LinkManager.h
@@ -165,8 +165,8 @@ namespace dp
LinkId LinkManager::link(dp::sg::core::ObjectSharedPtr const & srcObject, dp::util::PropertyId srcProperty,
dp::sg::core::ObjectSharedPtr const & dstObject, dp::util::PropertyId dstProperty)
{ -
DP_ASSERT( srcObject->getPropertyType(srcProperty) == static_castProperty::Type(TypedPropertyEnum<T>::type) ); -
DP_ASSERT( dstObject->getPropertyType(dstProperty) == static_castProperty::Type(TypedPropertyEnum<T>::type) ); -
DP_ASSERT( srcObject->getPropertyType(srcProperty) == static_castdp::util::Property::Type(dp::util::TypedPropertyEnum<T>::type) ); -
DP_ASSERT( dstObject->getPropertyType(dstProperty) == static_cast<dp::util::Property::Type>(dp::util::TypedPropertyEnum<T>::type) ); LinkId link = new LinkImpl<T>(srcObject, srcProperty, dstObject, dstProperty); storeLink(link);diff --git a/dp/sg/io/3DS/Loader/3DSLoader.h b/dp/sg/io/3DS/Loader/3DSLoader.h
index ff343fd..81e139f 100644
--- a/dp/sg/io/3DS/Loader/3DSLoader.h
+++ b/dp/sg/io/3DS/Loader/3DSLoader.h
@@ -44,8 +44,11 @@include <dp/util/PlugInCallback.h>
-#include <lib3ds/lib3ds.h>
-#include <lib3ds/lib3ds_impl.h>
+// #include <lib3ds/lib3ds.h>
+// #include <lib3ds/lib3ds_impl.h>
+
+#include <lib3ds.h>
+// #include <lib3ds/lib3ds_impl.h>
#ifdef _WIN32
// microsoft specific storage-class defines
diff --git a/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp b/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp
index 695a03b..1b79831 100644
--- a/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp
+++ b/dp/sg/ui/qt5/src/SceniXQGLWidget.cpp
@@ -1401,7 +1401,7 @@ namespace dp
dp::gl::RenderContextSharedPtr renderContextGL = dp::gl::RenderContext::create( dp::gl::RenderContext::FromHWND( (HWND)winId(), &m_format, m_shareWidget ? m_shareWidget->getRenderContext() : dp::gl::RenderContextSharedPtr() ) );
#elif defined(DP_OS_LINUX)
// TODO support format
-
dp::gl::RenderContextSharedPtr renderContextGL = dp::gl::RenderContext::create( dp::gl::RenderContext::FromDrawable( QX11Info::display(), QX11Info::appScreen(), winId(), m_shareWidget ? m_shareWidget->getRenderContext() : dp::gl::RenderContextSharedPtr::null ) ); -
#endif
dp::gl::RenderContextSharedPtr renderContextGL = dp::gl::RenderContext::create( dp::gl::RenderContext::FromDrawable( QX11Info::display(), QX11Info::appScreen(), winId(), m_shareWidget ? m_shareWidget->getRenderContext() : nullptr ) );
m_renderTarget = dp::gl::RenderTargetFB::create( renderContextGL );
}`