overte
overte copied to clipboard
Implement network serializer
This is the last part of the build warnings fix. It deals with the issue of glm classes not being trivially copyable, and therefore not being possible to correctly copy with memcpy.
It also makes the code a bit cleaner, by taking a bunch of fiddly offset-tracking code and moving it into a class.
The code was made with the aim to make it as amenable to inlining as possible.
Here are some builds you may use for testing:
macOS-10.15, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.dmg
ubuntu-18.04, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.tar.Z
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.sh
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.tar.gz
self-hosted_debian-11_aarch64, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.sh
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.tar.gz
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.tar.Z
windows-2019, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-6ebed67.exe
Here are some builds you may use for testing:
ubuntu-18.04, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.tar.gz
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.tar.Z
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.sh
self-hosted_debian-11_aarch64, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.tar.Z
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.tar.gz
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.sh
macOS-10.15, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.dmg
windows-2019, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-8b56ee6.exe
Here are some builds you may use for testing:
ubuntu-18.04, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.sh
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.tar.Z
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.tar.gz
self-hosted_debian-11_aarch64, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.tar.Z
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.sh
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.tar.gz
macOS-10.15, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.dmg
windows-2019, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-63914b5.exe
Main part is ready for test/review, test still needs updating, which I'll do soon.
Here are some builds you may use for testing:
macOS-10.15, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-2f831d0.dmg
windows-2019, full
- https://public.overte.org/build/overte/PR81/Overte-PR81-2f831d0.exe
Dug this up, rebased and polished it up. There was an issue with KTX textures I fixed now. At this point, this should work.
This breaks compatibility with the old KTX format, so on first run expect a bunch of warnings about that. That should be fine, it just means the old version cache can't be used, and it'll be fixed by clearing the cache.
This breaks compatibility with the old KTX format, so on first run expect a bunch of warnings about that. That should be fine, it just means the old version cache can't be used, and it'll be fixed by clearing the cache.
What about pre-baked assets?
What about pre-baked assets?
That's a good point, I'll have to check that out.
That was indeed a good point. This should be fixed now.
Okay, this is still not quite right. It works, but something in the output still doesn't line up with how the original was.
Dev meeting: fixing this could help with GLM issues in #641
I know everyone is super busy, but since this is blocking the warnings as errors grant work, may I suggest just merging this as is since it works, and we can deal with the unimplemented test at a later time?
Does it still break compatibility with older baked textures, or was that part resolved?
I tried building and testing it, but it uses older protocol, so I can't test it properly. @daleglass Can you rebase this PR on current master?
The current version hits an assert for me:
[12/31 12:50:11] [FATAL] [default] ASSERT failure in Q_UNREACHABLE(): "Q_UNREACHABLE was reached", file /home/ksuprynowicz/overte/overte/libraries/gpu-gl/src/gpu/gl45/GL45BackendTexture.cpp, line 113
Backtrace:
__pthread_kill_implementation 0x00007ffff049de5c
__pthread_kill_internal 0x00007ffff049debf
__GI_raise 0x00007ffff0449c82
__GI_abort 0x00007ffff04324f0
QMessageLogger::fatal(char const*, ...) const 0x00007ffff60922d1
qt_assert_x(char const*, char const*, char const*, int) 0x00007ffff6091408
gpu::gl45::GL45Backend::syncGPUObject GL45BackendTexture.cpp:113
gpu::gl::GLBackend::setResourceTexture GLBackendPipeline.cpp:304
gpu::gl::GLBackend::bindResourceTexture GLBackendPipeline.cpp:267
gpu::gl::GLBackend::do_setResourceTextureTable GLBackendPipeline.cpp:329
gpu::gl::GLBackend::renderPassDraw GLBackend.cpp:497
gpu::gl::GLBackend::render GLBackend.cpp:569
gpu::Context::executeFrame Context.cpp:146
OpenGLDisplayPlugin::present OpenGLDisplayPlugin.cpp:716
PresentThread::run OpenGLDisplayPlugin.cpp:198
<unknown> 0x00007ffff60de9e1
start_thread 0x00007ffff049c112
__GI___clone3 0x00007ffff051a8f8
@ksuprynowicz ah apologies, there was still one bug leftover. I've rebased this and fixed that here: #1293
and it does maintain compatibility with old baked textures!