Skip to content

Linux Build#93

Merged
isaacbrodsky merged 18 commits intomasterfrom
isaac/linux-build
May 1, 2020
Merged

Linux Build#93
isaacbrodsky merged 18 commits intomasterfrom
isaac/linux-build

Conversation

@isaacbrodsky
Copy link
Contributor

This depends on a branch of the deps, which depends on a modified version of vcpkg. I was able to successfully build and run the tests and the animometer example.

@ilijapuaca
Copy link
Contributor

Pushed additional updates to #92 which now has CI running on macOS. Once we have dependency situation figured out, we could restore Linux clang as CI target?

@isaacbrodsky
Copy link
Contributor Author

isaacbrodsky commented Apr 24, 2020

Builds except for the flight-paths example which depends on microsoft/vcpkg#11016.

I changed GCC to 9 to match the other build script.

@isaacbrodsky isaacbrodsky marked this pull request as ready for review May 1, 2020 05:13
@isaacbrodsky
Copy link
Contributor Author

isaacbrodsky commented May 1, 2020

Now ready for review. Main changes are:

  • Mainly, changes to the dependencies submodule to build on Linux (mainly enabling optional features on Arrow in vcpkg)
  • GCC requires viewport-uniforms fields be ordered a certain way; I assume this is a safe change but good to check on Mac that there's nothing unexpected in rendering
  • Minor fixes; missing includes and accidental platform specific type.

Benefits of this PR:

  • Can build the repo and run the tests under Linux (no support for running graphics)
  • CI tests this and uses the Linux build to run the tests under Valgrind, so we can detect memory issues that way.

Copy link
Contributor

@ilijapuaca ilijapuaca left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, we should land this one with all the arrow stuff out of the way. A few questions:

  • Does drawing work on Linux? You mentioned animometer example was running on using OpenGL, what about flight paths?
  • Seeing quite a few warnings in travis build, is that also the case when you build locally? Just making sure it's consistent, most of them are type related and should be easy to fix once I get around to fixing gcc build on macOS
  • Is this something we should be worried about?
==8479== LEAK SUMMARY:
==8479==    definitely lost: 3,848 bytes in 35 blocks
==8479==    indirectly lost: 832 bytes in 26 blocks
==8479==      possibly lost: 0 bytes in 0 blocks
==8479==    still reachable: 0 bytes in 0 blocks
==8479==         suppressed: 0 bytes in 0 blocks
==8479== Rerun with --leak-check=full to see details of leaked memory

// TODO(ilija@unfolded.ai): wrapLongitude and modelMatrix not set, set them to default values explicitly if they
// aren't relevant?
ViewportUniforms uniforms = {// Projection mode values
.viewProjectionMatrix = Matrix4<float>{matrixAndOffset.viewProjectionMatrix},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just curious, what kind of order does gcc try to enforce? This doesn't seem to match order within the actual struct

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GCC was complaining that the initializers weren't in the order the fields were declared in.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The order they are currently in on this branch does not match what's on master, that's why it looked pretty random to me. Perhaps we need to rebase to make sure it works after we merge

@isaacbrodsky
Copy link
Contributor Author

Awesome, we should land this one with all the arrow stuff out of the way. A few questions:

* Does drawing work on Linux? You mentioned animometer example was running on using OpenGL, what about flight paths?

At the moment it does not work. animometer does not render with this error:

$ build/gcc/cpp/examples/luma.gl/animometer 
Info: vkCreateInstance failed with VK_ERROR_INCOMPATIBLE_DRIVER
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.
...

Same issue on flight-paths right now.

* Seeing quite a few warnings in travis build, is that also the case when you build locally? Just making sure it's consistent, most of them are type related and should be easy to fix once I get around to fixing gcc build on macOS

Yes, the messages are consistent with my local build.

* Is this something we should be worried about?
==8479== LEAK SUMMARY:
==8479==    definitely lost: 3,848 bytes in 35 blocks
==8479==    indirectly lost: 832 bytes in 26 blocks
==8479==      possibly lost: 0 bytes in 0 blocks
==8479==    still reachable: 0 bytes in 0 blocks
==8479==         suppressed: 0 bytes in 0 blocks
==8479== Rerun with --leak-check=full to see details of leaked memory

It's not a big deal but I would prefer to eliminate leaks from the tests if possible. Usually this happens because when writing the test we might not bother to free some allocated memory, since the application will be torn down after the test.

@ilijapuaca
Copy link
Contributor

$ build/gcc/cpp/examples/luma.gl/animometer
Info: vkCreateInstance failed with VK_ERROR_INCOMPATIBLE_DRIVER
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.

This indicates that it's trying to use Vulkan, and I'm not sure what kind of state that's in. Perhaps it's just a matter of drivers on your machine not being compatible, but we can just switch up the order in which they are prioritized and bump OpenGL up if that works

@isaacbrodsky
Copy link
Contributor Author

isaacbrodsky commented May 1, 2020

$ build/gcc/cpp/examples/luma.gl/animometer
Info: vkCreateInstance failed with VK_ERROR_INCOMPATIBLE_DRIVER
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.
Error: Validation error: Pipeline attachment state is not compatible
Error: Validation error: Object is an error.

This indicates that it's trying to use Vulkan, and I'm not sure what kind of state that's in. Perhaps it's just a matter of drivers on your machine not being compatible, but we can just switch up the order in which they are prioritized and bump OpenGL up if that works

I think that was how I previously got it to work - looks like at some point it reverted to trying Vulkan.

Edit: Recompiling Dawn without Vulkan still gives this error. Possibly deck.gl is trying to use the wrong renderer, though, since Vulkan shouldn't have been used in the first place.

@isaacbrodsky isaacbrodsky merged commit f03b447 into master May 1, 2020
@isaacbrodsky isaacbrodsky deleted the isaac/linux-build branch May 1, 2020 16:11
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

Successfully merging this pull request may close these issues.

2 participants