Posts

This profile is from a federated server and may be incomplete. Browse more on the original instance.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

Nvidia driver with external sync is in beta.

Seems to work as expected. No more black flicker in Resolve, Noita, or Stardew Valley. No previous frames during hitches in Star Citizen.

@wonziu

dotstdy,
@dotstdy@mastodon.social avatar

@pervognsen @wolfpld yep. Nvidia have been pushing for it as their driver doesn't have any support for kernel tracked implicit sync of BOs

wonziu,
@wonziu@ioc.exchange avatar

@pervognsen @wolfpld
"explicit sync" :)

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

Why is clang taking 5 minutes to compile a relatively small C++ (168 KB) source file? Let's see...

https://github.com/ggerganov/llama.cpp/blob/917dc8cfa67a72fb7c8bf7392270da3bf4833af4/unicode-data.cpp

Ah, oh, um... That's not how you do it.

Here's 10 MB of data as source code that compiles in about 8 seconds:

https://raw.githubusercontent.com/wolfpld/tracy/8983e14e1875ea1b7de820c558f898f3ad47015a/profiler/src/profiler/TracyMicroArchitecture.cpp

pervognsen,
@pervognsen@mastodon.social avatar

@wolfpld @JamesWidman A small tip in case it helps with your startup time: when I have huge bulk data like this I segregate it into separate sections for pointer-containing and non-pointer-containing data so that the load-time pointer fix-ups/relocs only happen to the pages in the pointer data section.

pervognsen, (edited )
@pervognsen@mastodon.social avatar

@wolfpld @JamesWidman I didn't look closely enough to see whether that will happen automatically as a result of data vs rodata splitting in your case but it's something that can otherwise help if startup time is a concern. (Alternatively, you can use relative pointers, which can typically get away with being 32 bits on 64-bit platforms, but that's a more disruptive change.)

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

Gnome and window decorations, again.

https://factorio.com/blog/post/fff-408

dotstdy,
@dotstdy@mastodon.social avatar

@pervognsen @wolfpld one thing I'm curious about is how that interacts with like, the GPU driver and everything else. Maybe they have a separate process for gameplay? Or maybe that just works and I'm overthinking it.

Doomed_Daniel,
@Doomed_Daniel@mastodon.gamedev.place avatar

@dotstdy @pervognsen @wolfpld
reasonable question IMO

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

It's nice to have an image viewer that actually works.

Of course, Wayland is completely broken, as the only supported use case is when you have, for example, a 640x480 window (at 100% scale), and you scale it to the ratio of your DPI scale, say 150% to get a 960x720 rendering area, which the compositor then "scales down" to the logical 640x480 to account for higher DPI.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

Image viewers on Linux are in such a strange place. 30+ year old formats? Sure. Anything more modern? Roll the dice. Compressed textures? Lol!

There's this text-based viewer I like that outputs sixel data to the terminal. I wanted to see how I could extend it to support more formats. Turns out it's just an argv parsing shim over some Rust libraries.

Some graphical viewer? Qt was built wrong, so no JXL support. And it's 5 FPS when you pan an image, because everything is software rendered.

wolfpld,
@wolfpld@mastodon.gamedev.place avatar

@castano No support for DDS or PSD in current KDE. Maybe if you install some random plugin from github, but come on. It's not that hard and should be included by default.

On the other hand, I noted some time ago that spectacle (the KDE screenshot thing) lost the ability to crop images. The only thing I used out of all the tools it provided! Later I read an explanation that it was only there because some library randomly provided it, and that library dropped support. So it's not there anymore.

castano,
@castano@mastodon.gamedev.place avatar

@wolfpld That makes me sad 😞

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

For some time now I've been working on BC7 support in etcpak.

The codec I used as a base is Rich Geldreich's bc7enc, the 4-mode fast one. The results are bit-exact, so don't bother with checking the metrics.

(I find it hard to understand why you would want to go with a full-featured and slow codec (such as bc7e.ispc) and then put RDO on top, which degrades the quality way below what the fast codec can achieve.)

wolfpld,
@wolfpld@mastodon.gamedev.place avatar

@aras Thanks!

wolfpld,
@wolfpld@mastodon.gamedev.place avatar
wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

A super useful thing in VS Code: you can ctrl-click on a name and go to the definition, even if the name is in a comment.

ocornut,
@ocornut@mastodon.gamedev.place avatar

@wolfpld i’ll add this to the comments right above this section, thanks! Why is left side striked out?

wolfpld,
@wolfpld@mastodon.gamedev.place avatar

@ocornut That's clang-tidy advising me to use "using" instead of typedef. It just shows that way.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

I spent much of yesterday evening chasing a crash in the Intel driver and/or validation layers. Finally it turned out that it was fixed in the validation layers back on January 18th.

But the latest release on GitHub is 1.3.275, made on January 10th. And it's actually something Android related instead of a proper release?

Looking at the git tags, there have been 4 "non-releases" and we're now on v1.3.279.

Is there any kind of process to this at all?

sascha,
@sascha@mastodon.gamedev.place avatar

@wolfpld right now aside from Android, layers are only released through the LunarG SDK. Maybe we can get CI builds on GitHub for other platforms in the future.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

Fedora libraries built without frame pointer omission are a thing of beauty.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar
aras,
@aras@mastodon.gamedev.place avatar

@wolfpld whoa. And that’s “just code” ie no AVX512 when on Zen4 or so?

wolfpld,
@wolfpld@mastodon.gamedev.place avatar

@aras It's complicated. The code is the same as before, in the parts that matter. The compilers have improved, as you can see in the Intel timings below. The Intel chip supports AVX512 FWIW.

There is no explicit AVX512 in the code paths, but I compile with -march=native and clang is very happy to transform the logic expressed with AVX2 (or SSE2) intrinsics into AVX512 code.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

PNG load times in etcpak, using different variants of zlib.

In 1.2.11, I had the CRC calculation patched out and used the manual assembly files that you had to somehow include in the build process.

In 1.3.1, support for assembler code was removed because "there is not sufficient gain from the inflate assembler code to warrant its inclusion." (https://github.com/madler/zlib/commit/288f1080317b954b6bdca33708631c011549c008)

Finally, I use zlib-ng as a drop-in replacement for zlib. I just need to compile it with the ZLIB_COMPAT CMake option enabled.

aras,
@aras@mastodon.gamedev.place avatar

@wolfpld wondering how hard would it be to sneak in libdeflate in there

wolfpld,
@wolfpld@mastodon.gamedev.place avatar

@aras That was my original intention, but the API is incompatible.

They write in the readme that the ideal use case is to decompress large blocks, and streaming data is not so good. I haven't looked at the internals of libpng, but my guess is that they don't decompress more than a single line of data at a time.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

Here's some interesting data about how long Vulkan takes to initialize.

WSL:
VkInstance: 42 ms
VkDevice: 13 ms (llvmpipe)

Dell XPS laptop:
VkInstance: 61 ms
VkDevice: 2.9 ms (Intel Xe), 9 ms (llvmpipe)

Some Asus laptop:
VkInstance: 1.84 s (!)
VkDevice: 38 ms (Nvidia), 5 ms (Radeon), 26 ms (llvmpipe)

Well, there is no point in parallelizing this.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

How common are forced separate gfx and present queues in Vulkan? Does this separation exist on real hardware, or is it just a theoretical possibility?

To see if present is supported on a queue, you need to pass a surface to draw on to vkGetPhysicalDeviceSurfaceSupportKHR. This allows you to select the queue setup that will work.

But what if you don't have a surface to render to yet, but want to create a VkDevice that will be able to present?

sascha,
@sascha@mastodon.gamedev.place avatar

@wolfpld Just to check: Why would you create multiple VkDevices in that scenario instead of just one VkDevice with multiple queue create infos?

wolfpld,
@wolfpld@mastodon.gamedev.place avatar

@sascha I guess you can do that.

Getting all the queues preemptively but using only one seems wasteful though.

The real reason I wanted to create multiple VkDevices is because I assumed VkSwapchain imageSharingMode was part of VkDevice creation. It's not, as your question reminded me.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

An interesting topic came up in the PRs, related to the recent blog posts by @forrestthewoods.

Should it be acceptable for a C++ build process to require network availability to succeed?

To put it in context, the network would be used to download the source code of some of the libraries that need to be compiled and linked into your program.

My stance is that builds should be local only, but maybe I'm just an old man who hasn't noticed that modems are long gone by now?

What are your opinions?

AngryAnt,
@AngryAnt@mastodon.gamedev.place avatar

@wolfpld @forrestthewoods This all greatly simplifies all our development processes - at the cost of a little overhead when adding an external dependency (needing to clone it to infrastructure before committing), but that's a rare enough event and just means juggling a but of gitea web UI.

We could ofc. automate that as well, but it really isn't worth it.

Our development environments are cross-platform and yet onboarding instructions are just "install nix, clone the repository, run a build".

JamesWidman,

@pervognsen @wolfpld @forrestthewoods yeah; by default it seems that a dependency-resolving program (like conan or similar) should first check a local cache directory for each of the tarballs it needs. If they're already there (because you copied them from a flash drive or something), then the conan-ish program shouldn't need to download anything.

it should also be able to give you a list of everything it would have downloaded so that you can do that part independently.

wolfpld, to random
@wolfpld@mastodon.gamedev.place avatar

The Polish trains DRM talk has been released.

https://media.ccc.de/v/37c3-12142-breaking_drm_in_polish_trains

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • khanakhh
  • kavyap
  • thenastyranch
  • everett
  • tacticalgear
  • rosin
  • Durango
  • DreamBathrooms
  • mdbf
  • magazineikmin
  • InstantRegret
  • Youngstown
  • slotface
  • JUstTest
  • ethstaker
  • ngwrru68w68
  • cisconetworking
  • modclub
  • tester
  • osvaldo12
  • cubers
  • GTA5RPClips
  • normalnudes
  • Leos
  • provamag3
  • anitta
  • lostlight
  • All magazines