Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build broken for Linux on CentOS v7 #8

Open
derek-gerstmann opened this issue Jul 8, 2016 · 1 comment
Open

Build broken for Linux on CentOS v7 #8

derek-gerstmann opened this issue Jul 8, 2016 · 1 comment

Comments

@derek-gerstmann
Copy link

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 ) );
    
  •      dp::gl::RenderContextSharedPtr renderContextGL = dp::gl::RenderContext::create( dp::gl::RenderContext::FromDrawable( QX11Info::display(), QX11Info::appScreen(), winId(), m_shareWidget ? m_shareWidget->getRenderContext() : nullptr ) );
    
    #endif
    m_renderTarget = dp::gl::RenderTargetFB::create( renderContextGL );
    }`
@mtavenrath
Copy link
Collaborator

  1. fixed
  2. fixed with define, compiles on windows and linux now.
  3. TDB (seems to be an issue when using cuda only)
  4. fixed
  5. The pipeline uses "lib3ds-20080909.zip" (downloaded in 3rdpartybuild.cmake for windows). I'll check what's wrong here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants