Tommy Schmid

35 Followers
119 Following
77 Posts
Ex athlete, coder of all things fast and/or interesting.
Websitehttps://villainslair.eu

Today in questions that give away that I'm trying to do cursed things: why does vulkan not allow block-compressed formats with the same block size (extents and byte-size) to be compatible, for the purposes of aliasing?

Specifically I would like to alias BC3 and BC6H, which is definitely a perfectly reasonable and normal thing to want to do. It works (on my machine), but the validation layer does not like it since it's explicitely not legal 😩

After nine (nine!) years of development, meshoptimizer has reached its first major version, 1.0!

This release focuses on improvements in clusterization and simplification as well as stabilization; almost all experimental functionality added in past releases is now stable. Here's a release announcement with some more details on past, present and future; please RT!

https://meshoptimizer.org/v1

🐇 meshoptimizer v1.0

Mesh optimization library that makes meshes smaller and faster to render

Mesh optimization library that makes meshes smaller and faster to render
I'm not sure if I should report this to glslang to suggest OpUndef is inserted at function scope when applicable, or with AMD to suggest doing a "eliminate this register if never read" pass. The workaround is farily simple; always initialize everything, but this sure is a footgun, and it's not the first time I've fired it at my own feet.
Lessons from today's debugging adventures: SPIR-V has an OpUndef for undefined results, which are defined if it may be selected. The spec states it is preferred that these are defined with type definitions, although they are allowed to be in function bodies ($2.4.9). glslang appears to put them with type definitions.
AMD on windows initializes these to 0 at the point it encounters them, which means all undefined variables reserve a VGPR at global scope, even if they are not ever actually used.

Stock android clock changed snooze/stop from slide to buttons. I am not awake or aware when I use that UI, it's 100% muscle memory. Did they inform me of the change when I set the alarm? Nope.

They bundled this in with a UI/font change, so they are going to write the blowback off as "users don't like change" instead of the real issue; they just messed up millions of users' muscle memory in an app that people use while half aspleep and didn't bother to even warn about it.

Content creator

Nobody should voluntarily call themselves that. “Content” is the language of people on the distribution side of things. If you look at something like a 19th century newspaper it’s…

The ryg blog

Workaround: submit a single empty command buffer.

That's the tri-annual mastodon rubber-ducking session...relative quiet will now resume.

After fixing the new validation errors that had snuck in, it still didnt' work, but I spotted that the empty submit with only a fence that was crashing was on the compute queue, which is otherwise unused in these frames. Not submitting that fixed the issue. This is the only empty submit, so I checked if the issue was the queue or the empty submit, and it would appear RGP fails to capture if submits are empty. This would appear to be a bug, since that should be valid API usage AFAICT.

Clean driver reinstall and RGP re-download did not help.
Submit it crashes on has 0 command buffers, only a fence to signal, and it crashes on a null pointer access.
Started going through validation issues with everything on, and getting cursed things on every present:

"PRESENT_AFTER_WRITE....to prevent this hazard, it must allow Unhandled VkAccessFlagBits2 accesses at Unhandled VkPipelineStageFlagBits2..". The enum value it's looking up isn't in the docs yet.

One of those days :|

Additional datapoint: the infinite hang does not jappen until I shut down the application; as long as I keep the debugger on the crashing instruction everything continues to function (well, except the program and the profiling).