Giter Site home page Giter Site logo

Comments (3)

jlblancoc avatar jlblancoc commented on June 1, 2024

Thanks for reporting, @yuzibo ! I missed that one, but there are other Debian targeted changes on the way towards a new Debian release asap, so it's good to fix this one upstream now too.

Those particular unit tests are a bit "risky"... they render a 3D scene using whatever hardware GPU or software-emulated version of OpenGL is present in each architecture, and compare it, numerically pixel by pixel, with a reference one generated on a desktop PC with GPU. So much uncertainty in the middle!!

Without a copy of the resulting images we can't tell if the error is catastrophic or just a matter of differences in the OpenGL emulation.

But with some numbers: there are 200e3 pixels, so an error of 3000 means an average error of 0.015 (over 1.0, not 255), so it's an average 1.5% error.... The error you copied:

rgb_diff=1730.11
depth_diff=6079.06
./libs/opengl/src/CFBORender_unittest.cpp:247: Failure
Expected: (depth_diff) < (3000.0f), actual: 6079.05566 vs 3000

could then be "fixed" by just increasing the tolerance of the test.

However... looking at the latest failed log for riscv64 (the one you actually link to), the error is different:

[ RUN      ] OpenGL.CFBORender_camera_fov
make  -f tests/CMakeFiles/run_tests_mrpt_topography.dir/build.make tests/CMakeFiles/run_tests_mrpt_topography.dir/depend
Dependencies file "tests/CMakeFiles/test_mrpt_slam.dir/__/libs/slam/src/slam/CIncrementalMapPartitioner_unittest.cpp.o.d" is newer than depends file "/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/tests/CMakeFiles/test_mrpt_slam.dir/compiler_depend.internal".
Dependencies file "tests/CMakeFiles/test_mrpt_slam.dir/__/libs/slam/src/slam/CMonteCarloLocalization2D_unittest.cpp.o.d" is newer than depends file "/<<PKGBUILDDIR>>/obj-riscv64-linux-gnu/tests/CMakeFiles/test_mrpt_slam.dir/compiler_depend.internal".
unknown file: Failure
C++ exception with description "==== MRPT exception ====
Message:  Assert condition failed: m_eglContext != EGL_NO_CONTEXT
Location: ./libs/opengl/src/CFBORender.cpp:177: [mrpt::opengl::CFBORender::CFBORender(const Parameters&)
Call stack backtrace:
[0 ] (unknown file) mrpt::opengl::CFBORender::CFBORender(mrpt::opengl::CFBORender::Parameters const&)
[1 ]       0x2ab26bf540 

which seems to imply that the system is not capable of rendering off-screen (... or a bug in mrpt for whatever combination of constraints in that arch).

I think the easiest workaround is to add riscv to the blacklisted archs for these particular tests here:

// In MIPS, these tests crash in autobuilders, skip them:
#if defined(__mips__) || defined(__mips)
#undef RUN_OFFSCREEN_RENDER_TESTS
#endif
// Idem with PowerPC:
#if defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || \
defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || \
defined(_ARCH_PPC) || defined(__PPC64__) || defined(__ppc64__) || \

Do you agree?

from mrpt.

yuzibo avatar yuzibo commented on June 1, 2024

Thanks for the quick reply!

yes. The log I pasted above:

rgb_diff=1730.11
depth_diff=6079.06
./libs/opengl/src/CFBORender_unittest.cpp:247: Failure
Expected: (depth_diff) < (3000.0f), actual: 6079.05566 vs 3000

from my local Unmatched with a AMD Radeon HD 5000/6000/7350/8350 Series graphic card.

But the error from the official Debian buildd log generated from a Unmatched without any
graphic card AFAIK.

Sorry for the confusion.

More serious issues are even on my local Unmatched, the egl instance was still fail to create:

...
EGLContext context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
    if (context == EGL_NO_CONTEXT) {
        std::cerr << "Failed to create EGL context" << std::endl;
        EGLint error = eglGetError(); // 获取EGL错误代码
        std::cerr << "Failed to create EGL context. Error code: " << error << std::endl;
        return -1;
    }
...

The output:

Failed to create EGL context. Error code: 12291

It seems this is EGL_BAD_ALLOC issue from here

I think the easiest workaround is to add riscv to the blacklisted archs for these particular tests here:

This is my intent to report it here. If upstream agrees to do so, the Debian package maintainer should agree to skip the test on riscv64 also.:)

Could you tell me what the possible causes of this problem(EGL_BAD_ALLOC)? I hope to report it to other upstream also.
(BTW, I heard there is not GPU support on riscv64, especially from imaginations)

Thanks.

from mrpt.

jlblancoc avatar jlblancoc commented on June 1, 2024

Hi @yuzibo !

In theory, I think e0f4ccd "solves" the problem, once it's released as the next stable release.

However, I'm dissatisfied with not being able to find a reason for your EGL_BAD_ALLOC ... it might seem the render buffer is too large, but it shouldn't be the case for any modern graphic card, so...

from mrpt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.