01:31 <+bridge> [ddnet] i counted the amount of links it drops onto me when i try to do this whole sdl2.lib thing. i counted **100** different file paths 01:31 <+bridge> [ddnet] one is relating to visual studio's link.exe 01:42 <+bridge> [ddnet] @Not Keks could you try out if https://gitlab.com/Patiga/twgpu/-/tree/matrix-optimization increases fps for you over master? 02:07 <+bridge> [ddnet] @ReiTW https://deepfence.io/aya-your-trusty-ebpf-companion/ 02:07 <+bridge> [ddnet] maybe this interests you 02:58 <+bridge> [ddnet] @Ryozuki ho lol this is completly new & looks cool 02:59 <+bridge> [ddnet] maybe if I have time I can dive more into kprobes & tracepoints, it'sv very interesting 05:57 <+bridge> [ddnet] Will aarch64 support on Linux ever be added? 🥺 06:00 <+bridge> [ddnet] am i missing a library (either wavpack or openssl crypto) for cross compiling? 06:00 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1004599596217024633/message.txt 06:07 <+bridge> [ddnet] 06:07 <+bridge> [ddnet] **Note that when you build and develop locally, you should ideally use your system's package manager to install the dependencies, instead of relying on ddnet-libs submodule, which does not contain all dependencies anyway (e.g. openssl, vulkan).** 06:08 <+bridge> [ddnet] I don't know if this information helps, which was recently added to the readme. 06:08 <+bridge> [ddnet] i searched of ssl cross build, couldn't find it 06:08 <+bridge> [ddnet] in apt i mean 06:09 <+bridge> [ddnet] sudo apt install libcurl4-openssl-dev libssl-dev 06:10 <+bridge> [ddnet] i already have it installed, but it needs windows version of the library 06:10 <+bridge> [ddnet] `sudo apt-get install -y libcurl4-openssl-dev` 06:10 <+bridge> [ddnet] 06:10 <+bridge> [ddnet] I guess this should be enough 06:10 <+bridge> [ddnet] uh 08:44 <+bridge> [ddnet] why does discord offer a spoiler button but u still cant see the whole text xD, so bad 08:45 <+bridge> [ddnet] ah there are arrows 08:45 <+bridge> [ddnet] ok then its fine 08:45 <+bridge> [ddnet] whats ur OS, ubuntu 18? 08:46 <+bridge> [ddnet] it says u are using gcc 7 08:55 <+bridge> [ddnet] ubuntu 18.04 yes 08:55 <+bridge> [ddnet] yeah just dont compile on this machine xD 08:55 <+bridge> [ddnet] no spoiler, when text too long it offers to submit as file 08:56 <+bridge> [ddnet] i compiled openssl with mingw, but still doesn't work 08:56 <+bridge> [ddnet] u wont need to compile ssl 08:56 <+bridge> [ddnet] i wonder if cmake is not broken for cross compiling 08:56 <+bridge> [ddnet] are your ddnet-libs up to date? 08:56 <+bridge> [ddnet] yes they are 08:56 <+bridge> [ddnet] yeah i assume its just bcs u have an outdated OS and smth is broken with it 08:56 <+bridge> [ddnet] most probably cmake 08:56 <+bridge> [ddnet] just dont waste ur time and dont use this computer to compile xd 08:57 <+bridge> [ddnet] if you buy me a new one, ok 08:57 <+bridge> [ddnet] sudo nano /etc/apt/source.list 08:57 <+bridge> [ddnet] buster -> sid 08:57 <+bridge> [ddnet] sudo apt update 08:57 <+bridge> [ddnet] sudo apt dist-upgrade 08:57 <+bridge> [ddnet] ah wait ubuntu, well the ubuntu names xd 08:57 <+bridge> [ddnet] yeah but no 08:57 <+bridge> [ddnet] not yet 08:58 <+bridge> [ddnet] i still need this computer before i experiment with it 08:58 <+bridge> [ddnet] dual boot 08:58 <+bridge> [ddnet] or VM 08:58 <+bridge> [ddnet] no disk space 08:58 <+bridge> [ddnet] external disk 08:58 <+bridge> [ddnet] an USB stick xD 08:58 <+bridge> [ddnet] `/dev/mapper/xubuntu--vg-root 144G 120G 18G 88% /` 08:58 <+bridge> [ddnet] some minimal OS 08:59 <+bridge> [ddnet] u dont even need anything, can just use a OS without desktop environment xD 09:00 <+bridge> [ddnet] ah, you commented my pr 09:01 <+bridge> [ddnet] any other return? 09:02 <+bridge> [ddnet] what return? 09:02 <+bridge> [ddnet] bad translation i guess 09:02 <+bridge> [ddnet] feedback 🙂 09:03 <+bridge> [ddnet] i am not against ur pr, just wanted to give a quick solution xd 09:04 <+bridge> [ddnet] in general, not hiding standard function call is probably better for more profund compiler diagnostics 09:05 <+bridge> [ddnet] i edited my comment, i found the second mem_zero that fails 09:05 <+bridge> [ddnet] 09:05 <+bridge> [ddnet] its basically no difference, maybe a few FPS but nothing i can meassure with my eyes... 09:05 <+bridge> [ddnet] I guess the compiler sees through ur changes ^^ 09:05 <+bridge> [ddnet] actually, it also fails in network_client.cpp 09:06 <+bridge> [ddnet] ah yeah we mem_zero there too, i remember seeing it 09:06 <+bridge> [ddnet] why does it fail tho? 09:07 <+bridge> [ddnet] i mean which member variable causes it 09:07 <+bridge> [ddnet] cstaticringbuffer 09:07 <+bridge> [ddnet] hidden in cnetconnection 09:07 <+bridge> [ddnet] does it also tell why its failing? 09:08 <+bridge> [ddnet] it doesnt have any vtable 09:08 <+bridge> [ddnet] its neither trivial nor standard_layout with my assert 09:08 <+bridge> [ddnet] it means it has a default constructor that we are overriding 09:09 <+bridge> [ddnet] ah i isee 09:09 <+bridge> [ddnet] cstaticringbuffer initialize some pointers 09:09 <+bridge> [ddnet] with mem_zero, it has null pointers 09:09 <+bridge> [ddnet] yeah i mean for basically all stuff u just need to add parenthesis to have the same effect as mem_zero 09:09 <+bridge> [ddnet] except in variable declaration where you need `{}` 09:10 <+bridge> [ddnet] can u give an example? 09:11 <+bridge> [ddnet] this one also fails 09:12 <+bridge> [ddnet] bcs we provide a custom constructor tho 09:12 <+bridge> [ddnet] if you do `CMyClass MyVar();` it declares a function `MyVar` taking no parameter and returning an object of `CMyclass` 09:13 <+bridge> [ddnet] but u could probs still do m_Snap = decltype(m_Snap)(); 09:13 <+bridge> [ddnet] should zero it too 09:13 <+bridge> [ddnet] yup, based on heinrich comment i will hide all this in mem_zero function 09:13 <+bridge> [ddnet] i was just waiting for more comment 🙂 09:14 <+bridge> [ddnet] IMHO try to minimize custom constructors anyway 😄 09:14 <+bridge> [ddnet] i mean sometimes they can make sense, not gonna deny 09:14 <+bridge> [ddnet] im not doing any constructor there 09:14 <+bridge> [ddnet] but cgameclient has one right? 09:14 <+bridge> [ddnet] just using default compiler generated 09:14 <+bridge> [ddnet] yeah ok 09:14 <+bridge> [ddnet] for once, i'll be on your side to push for c++20 as well 😄 09:15 <+bridge> [ddnet] i just mean if u donst have custom constructor, i dont see any reason to use CLass() 09:15 <+bridge> [ddnet] instead of mem_zero 09:15 <+bridge> [ddnet] so that we can also have comparison operator generated by compiler 09:15 <+bridge> [ddnet] is that so with c++20? 09:15 <+bridge> [ddnet] should surprise me actually 09:18 <+bridge> [ddnet] u for example mean operator== right? 09:18 <+bridge> [ddnet] until someone adds a member that changes this, cf recent addition of `std::set` byt C0d3d3v 09:18 <+bridge> [ddnet] thats usually a friend operator and not part of the class itself 09:18 <+bridge> [ddnet] any operator actually 09:18 <+bridge> [ddnet] yeah but std::set has no custom constructor either 09:18 <+bridge> [ddnet] any comparison operator* 09:19 <+bridge> [ddnet] so u could still do CClass() 09:19 <+bridge> [ddnet] it does? 09:19 <+bridge> [ddnet] just like any stl member 09:19 <+bridge> [ddnet] let me find it in the spec, I'm actually surprise if c++20 has that 09:19 <+bridge> [ddnet] search for space ship operator 😄 `<=>` 09:20 <+bridge> [ddnet] but you can also use `bool operator==(const CClass&) = default;` 09:20 <+bridge> [ddnet] ah but only for classes, but not struct? 09:20 <+bridge> [ddnet] struct are classes 09:20 <+bridge> [ddnet] 09:21 <+bridge> [ddnet] mh yeah 09:21 <+bridge> [ddnet] u right 09:21 <+bridge> [ddnet] all STL classes have default constructor becuase internal working is implementation defined 09:21 <+bridge> [ddnet] weird that i thought u need a friend operator, maybe im getting old too 09:21 <+bridge> [ddnet] that's why it crashed on windows and not on linux 09:21 <+bridge> [ddnet] for our specific case dating back from start of june 09:22 <+bridge> [ddnet] but even if, how does that change that u can just call CClass()? makes zero sense 09:23 <+bridge> [ddnet] CClass has no custom constructor 09:23 <+bridge> [ddnet] so only the custom constructor for std::set is explicitly called 09:23 <+bridge> [ddnet] rest is compiler provided 09:24 <+bridge> [ddnet] but custom constructor might set up some pointers and internal structs. This all get erased with mem_zero 09:24 <+bridge> [ddnet] yeah but where did i say smth about mem_zero xD 09:24 <+bridge> [ddnet] m_Snap = decltype(m_Snap)(); 09:24 <+bridge> [ddnet] i said, lets minimize custom constructors and rely on the compiler 09:25 <+bridge> [ddnet] and as i said as well, i don't write any custom constructor in my pr, i only use and trust the compiler to do its job 09:25 <+bridge> [ddnet] but u do use std::copy and stuff? 09:25 <+bridge> [ddnet] u can copy arrays by just using std::array 09:25 <+bridge> [ddnet] instead of c like arrays 09:26 <+bridge> [ddnet] well, that's another problem and probably another PR 09:27 <+bridge> [ddnet] ok, well i dont want to judge on your PR, but if i'd rewrite it, i'd try to get away from c style probably 09:27 <+bridge> [ddnet] i didn't want to change too much of the code 09:27 <+bridge> [ddnet] replacing std::array with something self defined that does some checks(which gcc lib probably ships) is easier too 😄 09:28 <+bridge> [ddnet] i don't thing replacing all arrays with std::array is worth it, especially with my PR where copy is also compiler generated (which would also be the case with std::array) 09:28 <+bridge> [ddnet] i don't think replacing all arrays with std::array is worth it, especially with my PR where copy is also compiler generated (which would also be the case with std::array) 09:29 <+bridge> [ddnet] well anyway, i dont see why not using std::copy over mem_copy or whatever we use 09:29 <+bridge> [ddnet] for mem_zero i'd rely on constructor, if u do that its fine i guess 09:31 <+bridge> [ddnet] std::copy also uses copy constructor if existing 09:31 <+bridge> [ddnet] but in our codebase, it doesn't change anything (for now) 09:32 <+bridge> [ddnet] i saw u added some 09:32 <+bridge> [ddnet] maybe just typedef if 2 classes use the same internals 09:33 <+bridge> [ddnet] nah, typedef is error prone once someone changes one of the struct 09:34 <+bridge> [ddnet] that's why sometimes i also added a static_assert 09:34 <+bridge> [ddnet] add a comment where its used ^^ 09:34 <+bridge> [ddnet] just to be sure if someone changes something 😄 09:35 <+bridge> [ddnet] ```c++ 09:35 <+bridge> [ddnet] new(m_aQueue) std::remove_pointer::type{}; 09:35 <+bridge> [ddnet] ``` 09:35 <+bridge> [ddnet] thats an uff tho 09:36 <+bridge> [ddnet] will be moved and hidden in mem_zero 🙂 09:36 <+bridge> [ddnet] will be moved and hidden in mem_zero 😉 09:38 <+bridge> [ddnet] for classes std::array should default initialize 09:38 <+bridge> [ddnet] and std::array also has fill() 09:40 <+bridge> [ddnet] but m_aQueue = {} looks nicer for sure xD 09:41 <+bridge> [ddnet] but isn't std::array heavier assembly wise? 09:41 <+bridge> [ddnet] why 09:41 <+bridge> [ddnet] bcs of the c++ is zero abstraction lie? 09:42 <+bridge> [ddnet] zero cost* 09:42 <+bridge> [ddnet] cost abstraction to be precise xd 09:43 <+bridge> [ddnet] i think it adds a check for operator[] 09:43 <+bridge> [ddnet] if you dont use functions like at(..) that do boundary checks it should be same 09:43 <+bridge> [ddnet] [] has no extra checks 09:44 <+bridge> [ddnet] at 09:44 <+bridge> [ddnet] 09:44 <+bridge> [ddnet] (C++11) 09:44 <+bridge> [ddnet] 09:44 <+bridge> [ddnet] access specified element with bounds checking 09:44 <+bridge> [ddnet] operator[] 09:44 <+bridge> [ddnet] 09:44 <+bridge> [ddnet] (C++11) 09:44 <+bridge> [ddnet] 09:44 <+bridge> [ddnet] access specified element 09:44 <+bridge> [ddnet] > Returns a reference to the element at specified location pos. No bounds checking is performed. 09:45 <+bridge> [ddnet] it duplicates code a lil bit, but i hope -O3 inline most of it 09:46 <+bridge> [ddnet] tbh if this is what makes our code slow, then we really have the most optimized app ever xD 09:46 <+bridge> [ddnet] i bet there are problems that would easily outshadow almost anything that comes with abstractions 09:46 <+bridge> [ddnet] probably 🙂 09:47 <+bridge> [ddnet] i just like the attention to details 09:47 <+bridge> [ddnet] me too 09:48 <+bridge> [ddnet] but i prefer to rely on compiler.. better write an app that works with O3 native lto whatever squeezes the 5 extra fps, then other ways ^^ 09:48 <+bridge> [ddnet] but i prefer to rely on compiler.. better write an app that works with O3 native lto whatever squeezes the 5 extra fps, than other ways ^^ 09:58 <+bridge> [ddnet] @Patiga can i set "real" fullscreen? 09:58 <+bridge> [ddnet] i can force it in KDE, but its only desktop fullscreen 09:59 <+bridge> [ddnet] hm interesting. I also ran the different versions through valgrind and it appears as if my own code makes out only a very small portion of the cpu work. Because of this I'm very confused by the your new cpu bottleneck. maybe the wgpu code does some weird stuff with the scissor things, I don't know 09:59 <+bridge> [ddnet] lemme check 10:00 <+bridge> [ddnet] yes, haven't tried that yet 10:00 <+bridge> [ddnet] does ddnet do that? 10:01 <+bridge> [ddnet] in fullscreen the GPU overhead defs kicks in 10:01 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1004660394075373630/unknown.png 10:01 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1004660394524168233/unknown.png 10:01 <+bridge> [ddnet] ddnet basically constant on 10k fps 10:02 <+bridge> [ddnet] but I don't understand why the bounding box optimization changed the bottleneck at all. According to the profiling I did the impact of my own code is super minimal 10:03 <+bridge> [ddnet] ok just checked, KDE's fullscreen is just as fast as using fullscreen inside ddnet directly 10:03 <+bridge> [ddnet] so can just use that ^^ 10:04 <+bridge> [ddnet] well yeah maybe the bounding box thing was less of a problem than u thought 10:04 <+bridge> [ddnet] did you profile in debug mode? 10:04 <+bridge> [ddnet] is there smth like releasewithdebinfo in cargo? 10:04 <+bridge> [ddnet] i can look what it reports for me 10:05 <+bridge> [ddnet] does valgrind work with rust compiled stuff? 😄 10:05 <+bridge> [ddnet] yes :) 10:05 <+bridge> [ddnet] in release mode 10:05 <+bridge> [ddnet] it contains debug info according to "file",so i guess that should work 10:05 <+bridge> [ddnet] yeah there is 10:06 <+bridge> [ddnet] I actually have a compile profile for that in twgpu :D 10:06 <+bridge> [ddnet] `cargo build --profile=release-with-debug` 10:07 <+bridge> [ddnet] hm my messages are kinda out of sync with yours ^^ 10:08 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1004662135839801394/unknown.png 10:08 <+bridge> [ddnet] thats the callgraph for me 10:09 <+bridge> [ddnet] yes, seems about right 10:09 <+bridge> [ddnet] looks like 99% wgpu work to me tho 10:09 <+bridge> [ddnet] looks like 97% wgpu work to me tho 10:09 <+bridge> [ddnet] ok 92 xd 10:09 <+bridge> [ddnet] 5% are "your" overhead only? 10:09 <+bridge> [ddnet] ah, one thing could be that I should reduce the amount of set_scissor_rect 10:09 <+bridge> [ddnet] you can rightclick and select a lower threshold than 5% so that you see more elements 10:10 <+bridge> [ddnet] inside of the `GpuEnvelopesData::update`, its also mostly wgpu 10:10 <+bridge> [ddnet] maybe I should next optimize wgpu :thonk: 10:10 <+bridge> [ddnet] yeah i guess wgpu's fault xdd 10:11 <+bridge> [ddnet] I mean I won't complain on native where we get enough fps anyways, but would be cool for webgl 10:12 <+bridge> [ddnet] even with mini window i cannot get to 10k fps xdd 10:12 <+bridge> [ddnet] ddnet does 10:12 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1004663023312576613/unknown.png 10:12 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/1004663023769751652/unknown.png 10:12 <+bridge> [ddnet] well mini window also only makes it easier for gpu, not cpu, right? ^^ 10:13 <+bridge> [ddnet] yes, i hoped the rendercalls are faster then 10:13 <+bridge> [ddnet] but almost no difference, so 100% cpu bound 10:13 <+bridge> [ddnet] yeah, but then at least I can happily say that my renderer seems well optimized for you :) 10:13 <+bridge> [ddnet] i ddnet fullscreen with 800x600 i get more than 11k fps for example 10:13 <+bridge> [ddnet] so gives at least a slight boost 10:14 <+bridge> [ddnet] maybe I could still look into decreasing the amount of my wgpu calls (yes first thing maybe `set_scissor_rect` coz I did that a lot for bounding box) 10:15 <+bridge> [ddnet] for example currently I also always set the pipeline in each layer, irregardless of what layer was rendered before 10:15 <+bridge> [ddnet] worth a try 10:15 <+bridge> [ddnet] I kinda hoped wgpu would just easily deduplicate those 10:15 <+bridge> [ddnet] else native vk hehehe 10:15 <+bridge> [ddnet] heh, I like my portability :p 10:15 <+bridge> [ddnet] irregardless 10:15 <+bridge> [ddnet] adverb 10:15 <+bridge> [ddnet] 1) regardless 10:16 <+bridge> [ddnet] […] 10:16 <+bridge> [ddnet] 😄 10:16 <+bridge> [ddnet] 1k lines to draw a triangle xd 10:16 <+bridge> [ddnet] I'm longing for the day where one can get frame timings so you can do ~60 fps on a 60 fps screen. why is that not a thing? 10:17 <+bridge> [ddnet] I wrote something with https://docs.rs/vulkano/latest/vulkano/ once 10:17 <+bridge> [ddnet] bcs its simply too hard 10:17 <+bridge> [ddnet] to time it perfectly 10:17 <+bridge> [ddnet] that abstraction made it quite pleasant actually, wrote a ray tracer with it 10:17 <+bridge> [ddnet] is there a way to get when the screen refreshes? 10:17 <+bridge> [ddnet] without the ray tracing extension though, my gpu doesnt support it 10:17 <+bridge> [ddnet] we need 100% perf, write own driver 10:18 <+bridge> [ddnet] at 10k fps, you could surely optimize it a little for 60 fps 10:18 <+bridge> [ddnet] even then the frames wont look 100% consistent to your eye 10:18 <+bridge> [ddnet] wdym? 10:18 <+bridge> [ddnet] if a frame is 1ms slower, the next 1ms faster 10:18 <+bridge> [ddnet] it already looks janky 10:18 <+bridge> [ddnet] okay, so you could do the following: 10:18 <+bridge> [ddnet] humans might have bad reflexes 10:19 <+bridge> [ddnet] but we still see stuff like this 10:19 <+bridge> [ddnet] @Not Keks https://videocardz.com/newz/amd-to-announce-ryzen-7000-on-august-29th-launching-september-15th 10:19 <+bridge> [ddnet] I'd like a citation for the 1 ms, if you know one 10:19 <+bridge> [ddnet] 10k fps means your frames take 0.1 ms and you have a budget of 16.7 ms 10:19 <+bridge> [ddnet] 5.5ghz 10:19 <+bridge> [ddnet] Rumored 10:20 <+bridge> [ddnet] that means you could render one frame straight after your old one, then maybe 8 ms before the next frame, 4ms, 2 ms, 1 ms, 0.5 ms, 0.2 ms, 0.1 ms 10:20 <+bridge> [ddnet] this means you only render 8 frames per frame shown 10:20 <+bridge> [ddnet] vs 167 per frame shown 10:20 <+bridge> [ddnet] yes, i know what you are about to say, but when do you start your frame, when do u stop it?, even 0.2ms difference might feel weird 10:20 <+bridge> [ddnet] if u just run it (wihtout vsync) u get partial frames 10:20 <+bridge> [ddnet] which would be an improvement of like 20x 10:21 <+bridge> [ddnet] everytime vsync is involved u basically rip 10:21 <+bridge> [ddnet] you want to have 10k fps to make screen tearing less bad? 10:21 <+bridge> [ddnet] yes 10:21 <+bridge> [ddnet] thats basically the idea 10:21 <+bridge> [ddnet] u have 10k fps and it looks insanly smooth 10:22 <+bridge> [ddnet] btw, i clamp my fps to 1400 fps 10:22 <+bridge> [ddnet] isn't there such a thing as triple buffering for that? 10:22 <+bridge> [ddnet] at around 700 fps i can visually notice a difference 10:22 <+bridge> [ddnet] it seems like a really inefficient solution to screen tearing 10:22 <+bridge> [ddnet] nice 10:22 <+bridge> [ddnet] it sounds like a really inefficient solution to screen tearing 10:22 <+bridge> [ddnet] i want one xd 10:22 <+bridge> [ddnet] for 15k fps xd 10:23 <+bridge> [ddnet] it is indeed 10:23 <+bridge> [ddnet] and yet all solutions to screen tearing that exists, freesync and shit are "syncs" so u get delay 10:23 <+bridge> [ddnet] that u also notice 10:23 <+bridge> [ddnet] even at 240hz 10:23 <+bridge> [ddnet] its not unplayable dont get me wrong 10:23 <+bridge> [ddnet] its just the edge of the sword 10:24 <+bridge> [ddnet] a delay of 0.1ms should be unnoticeable, right? 10:24 <+bridge> [ddnet] with triple buffering and 10k fps 10:24 <+bridge> [ddnet] hard to say, i never had a 100k fps yet ^^ 10:24 <+bridge> [ddnet] ^^ 10:24 <+bridge> [ddnet] as said i start to notice it under 700 fps for sure 10:24 <+bridge> [ddnet] then it really starts to look laggier 10:24 <+bridge> [ddnet] but only from screen tearing? 10:24 <+bridge> [ddnet] or also from input delay? 10:25 <+bridge> [ddnet] yes visually only 10:25 <+bridge> [ddnet] input delay is probs the same 10:25 <+bridge> [ddnet] so you're noticing that it's less than 700 fps when freesync is enabled? 10:26 <+bridge> [ddnet] with freesync i notice it even with 10k fps, bcs with freesync it renders the whole screen at once 10:26 <+bridge> [ddnet] can you explain? 10:26 <+bridge> [ddnet] in theory, it should at most have 0.1 ms delay, right? 10:26 <+bridge> [ddnet] how do displays work? ^^ 10:26 <+bridge> [ddnet] they don't refresh everything at once? 10:27 <+bridge> [ddnet] yes, but it fells slightly delay 10:27 <+bridge> [ddnet] 10:27 <+bridge> [ddnet] displays basically update the buffer every 20% of the screen 10:27 <+bridge> [ddnet] smth like that 10:27 <+bridge> [ddnet] so it renders 10% of the screen, gets new data, renders next 10% 10:27 <+bridge> [ddnet] ah 10:27 <+bridge> [ddnet] so '60 fps' is a simplification 10:27 <+bridge> [ddnet] smth like that, cannot say ofc, no high refresh rate camera here xD 10:27 <+bridge> [ddnet] yes 10:27 <+bridge> [ddnet] its basically a lie xD 10:27 <+bridge> [ddnet] I see, then I'll need to rethink it I guess 10:27 <+bridge> [ddnet] ^^ 10:27 <+bridge> [ddnet] thanks 10:30 <+bridge> [ddnet] maybe in theory, if the industry would invent smth new u could estimate in what time frame the first 10% of the screen are always output and spam more frames only in this time frame 10:30 <+bridge> [ddnet] 10:30 <+bridge> [ddnet] so basically render 10% of the screen on the GPU for +- 0.1ms in the time window the display accepts new input 10:30 <+bridge> [ddnet] but i could not do that in teeworlds, that's smth the driver would need to do 10:30 <+bridge> [ddnet] wtf? I've never heard this? 10:30 <+bridge> [ddnet] well how else does tearing occur? 10:31 <+bridge> [ddnet] by just drawing a full frame when its being updated 10:31 <+bridge> [ddnet] its 2 frames on the same screen 10:31 <+bridge> [ddnet] 2 or more 10:31 <+bridge> [ddnet] it could also occur by getting the whole buffer at a time where the rendering isn't finished 10:31 <+bridge> [ddnet] do you have a reference for 10% screen rendering? 10:31 <+bridge> [ddnet] that would break the concept of framebuffers i guess ^^ 10:31 <+bridge> [ddnet] its not aware what fragments are rendered 10:31 <+bridge> [ddnet] u basically render offscreen GPU wise 10:32 <+bridge> [ddnet] only give the finished frame to the display 10:32 <+bridge> [ddnet] I thought that was vsync 10:32 <+bridge> [ddnet] but the display as said accepts new buffers already, which might get updated then 😄 10:32 <+bridge> [ddnet] that you only give full frames to the display 10:32 <+bridge> [ddnet] thats just u wait for the display to finish the full framebuffer 10:32 <+bridge> [ddnet] u dont push new data 10:32 <+bridge> [ddnet] until the display is 100% finished 10:32 <+bridge> [ddnet] u still always push full frames to it 10:33 <+bridge> [ddnet] ^ thus this could theoretically work 10:33 <+bridge> [ddnet] but i also newer made GPU/display hardware to judge about it 10:34 <+bridge> [ddnet] i searched for 10% screen rendering or "partial screen rendering" and didn't find anything about that 10:35 <+bridge> [ddnet] https://youtu.be/Oc0jfcoy0R4?t=25 10:35 <+bridge> [ddnet] well its not 10% exactly 10:35 <+bridge> [ddnet] i have no idea how muhc it is 10:35 <+bridge> [ddnet] i bet 240 hz monitors update more often than 60hz 10:36 <+bridge> [ddnet] but in this video u really see how top frames advance first 10:36 <+bridge> [ddnet] before the other ones xd 10:45 <+bridge> [ddnet] but you have no proof this is not just the screen making this instead of the gpu 10:45 <+bridge> [ddnet] it's probably a way to prevent drawing too much power for the screen to only update part of it sequentially 10:46 <+bridge> [ddnet] in fact i even claimed this is the screen 10:46 <+bridge> [ddnet] where did i say its the GPU XD 10:46 <+bridge> [ddnet] why should the GPU do weird stuff like this xD 10:47 <+bridge> [ddnet] there https://discord.com/channels/252358080522747904/293493549758939136/1004667582256775219 10:47 <+bridge> [ddnet] > so basically render 10% of the screen on the GPU 10:47 <+bridge> [ddnet] yeah thats maybe solution 10:47 <+bridge> [ddnet] u basically do the same the screen does just on the GPU 10:48 <+bridge> [ddnet] so u only need to render frames for a few ms 10:48 <+bridge> [ddnet] and not the whole time 10:55 <+bridge> [ddnet] for official ddnet release? do you currently build ddnet yourself? 17:32 <+bridge> [ddnet] I am the host of some noby's Fng like the ones from brazil or chile, there are higher performance servers but they are with arm processors and ddnet is not compatible (aarch64) 17:32 <+bridge> [ddnet] So I would like to have a compatibility to be able to provide more consistent fng servers and maybe with ddnet if u want 17:45 <+bridge> [ddnet] 🥺 17:59 <+bridge> [ddnet] @Learath2 ```c 17:59 <+bridge> [ddnet] void f(int n, char _[( 17:59 <+bridge> [ddnet] (n < 0) ? 17:59 <+bridge> [ddnet] printf("negative!") 17:59 <+bridge> [ddnet] : (n > 0) ? 17:59 <+bridge> [ddnet] printf("positive!") 17:59 <+bridge> [ddnet] : 17:59 <+bridge> [ddnet] printf("zero!") 17:59 <+bridge> [ddnet] , 1 17:59 <+bridge> [ddnet] )]) {} 17:59 <+bridge> [ddnet] ``` 17:59 <+bridge> [ddnet] valid c 17:59 <+bridge> [ddnet] https://lemon.rip/w/c99-vla-tricks/ 18:00 <+bridge> [ddnet] @Learath2 ```c 18:00 <+bridge> [ddnet] void f(int n, char _[( 18:00 <+bridge> [ddnet] (n < 0) ? 18:00 <+bridge> [ddnet] printf("negative!") 18:00 <+bridge> [ddnet] : (n > 0) ? 18:00 <+bridge> [ddnet] printf("positive!") 18:00 <+bridge> [ddnet] : 18:00 <+bridge> [ddnet] printf("zero!") 18:00 <+bridge> [ddnet] , 1 18:00 <+bridge> [ddnet] )]) 18:00 <+bridge> [ddnet] { 18:00 <+bridge> [ddnet] } 18:00 <+bridge> [ddnet] ``` 18:03 <+bridge> [ddnet] That's a bizarre use, but yes completely valid :D 18:29 <+bridge> [ddnet] 😄 18:30 <+bridge> [ddnet] ddnet editor is still infested with crashes :( 18:39 <+bridge> [ddnet] it will be, as long as it's going to be poorly supported 18:40 <+bridge> [ddnet] at this point, an external editor would be more useful and beneficial 18:47 <+bridge> [ddnet] Just compile it yourself. We already have very few Linux players, not worth it to build arm-specific binaries. 18:48 <+bridge> [ddnet] on these servers, you can follow the instructions from https://github.com/ddnet/ddnet/ 18:48 <+bridge> [ddnet] There might be some weird corner cases with physics because of floating point differences. I remember we had problems with an x86-based server 18:59 <+bridge> [ddnet] I will check thx 19:02 <+bridge> [ddnet] I also thought about using an arm machine for official ddnet servers, if a good offer comes around, might do it 19:06 <+bridge> [ddnet] Even on nightly? But yeah its really bad xd 19:08 <+bridge> [ddnet] nah, recently there have been much more 19:09 <+bridge> [ddnet] ill try nightly later ig 20:36 <+bridge> [ddnet] So is it finally getting touched? perhaps we can use translations to the editor? Maybe a chance to add description txt files to entities... 20:58 <+bridge> [ddnet] much more crashes 20:58 <+bridge> [ddnet] not features 20:58 <+bridge> [ddnet] and some features too ig 21:19 <+bridge> [ddnet] could you bring the old ninja freeze back, at least as an option like cl_old_gun_position? 23:04 <+bridge> [ddnet] @deen any idea of what i am missing for cross compiling? I cross compiled openssl 1.1.1q that was missing but i still got the same error 23:15 <+bridge> [ddnet] https://www.reddit.com/r/rust/comments/wg3fks/chrono_0420_has_been_released_fixing_the/ 23:15 <+bridge> [ddnet] damn 23:15 <+bridge> [ddnet] finally 23:16 <+bridge> [ddnet] so many ppl relied on this crate 23:16 <+bridge> [ddnet] me included 23:16 <+bridge> [ddnet] > chrono is one of the most popular date and time libraries for Rust. 23:34 <+bridge> [ddnet] what error? 23:35 <+bridge> [ddnet] @c0d3d3v ^