@dneto@mastodon.gamedev.place avatar

dneto

@dneto@mastodon.gamedev.place

Vulkan, WebGPU shader stuff at Google.
WGSL editor.
Former SPIR WG chair @ Khronos; still doing SPIR-V.
GitHub @dneto0 Twitter @dneto1969

Searchable

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

litherum, to random
@litherum@masto.ai avatar

I remember it took me literal days to figure out the “umount” command doesn’t have the letter “n” in it

I kept reading online about people saying “use umount” and every time I tried, it said “unmount: command not found”

I felt so stupid when I figured it out

And then I thought, no, it is not me who is stupid, it is whoever named that fucking command and deleted a random letter from the middle of it

dneto,
@dneto@mastodon.gamedev.place avatar

@litherum

You know about 'creat' right?

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

Inclusive language tips:
Instead of "Hey guys", say "Hey folks" or "Folks".
Instead of "manpower" say "staff".

Concision, precision, and inclusion.

dneto,
@dneto@mastodon.gamedev.place avatar

@tojiro
Growing up in Canada, nobody said Y'all. For me it was culturally coded as uneducated redneck, so to speak.
Then I took a grad course in formal languages and mathematical logic. The TA was from Texas and said Y'all and "alls ya gotta do" a lot. It was jarring and reset my biases.

(Also, "red neck" comes from working outside, which is often grueling and skilled work!)

dneto, to llvm
@dneto@mastodon.gamedev.place avatar

So the thing about LLVM IR is, in reality it's a family of accidental and informally defined dialects. Every LLVM-based compiler for a particular machine target refines the input module down to its own idiosyncratic dialect.

Consequently there's way more latitude for confusion and bugs than you'd initially guess.

Try using an i65 type in an x86 backend. When I did that years ago it sailed right through and generated nonsense code.

litherum, to random
@litherum@masto.ai avatar

You know what GLSL needs?

Inline assembly. So you can write snippets of SPIR-V in your GLSL shader.

(I'm only mostly joking)

dneto,
@dneto@mastodon.gamedev.place avatar
dneto,
@dneto@mastodon.gamedev.place avatar

@litherum

My team added the Vulkan SPIR-V backend to DXC starting in 2017. Vulkan benefitted by getting the latest greatest HLSL compiler. I don't speak for Microsoft but I can guess they benefitted by expanding the audience for and usage of HLSL.

(As I like to say, a programming language is a cultural artifact. Network effects matter a lot.)

dneto,
@dneto@mastodon.gamedev.place avatar

@litherum
Also the SPIR-V feature was clearly only for Vulkan, AFAIK

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

Atomic loads and stores are sufficient for multi-threaded programming without tears, but they can't guarantee multi-threaded programming without tears.

dneto,
@dneto@mastodon.gamedev.place avatar

@nh
Well you might also want a progress guarantee...

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

University of Toronto students are protesting the situation in Gaza and demanding financial divestment in Israel and cutting ties with universities in Israel.
The University is willing to give in on the first, not the second, and has given 24hrs to accept the terms and vacate the premises.

This reminds me of the fight against South African apartheid. Students led a 6 year campaign ending in full divestment, including a 3hr occupation of the president's office
https://nvdatabase.swarthmore.edu/content/university-toronto-students-win-divestment-apartheid-south-africa-1984-1990

litherum, to random
@litherum@masto.ai avatar

only in C++ could there simultaneously be:

  • rule of 3
  • rule of 5
  • rule of 0
dneto,
@dneto@mastodon.gamedev.place avatar

@litherum

Without looking I don't know any of them.
Then there's ODR which would be a rule of 1.

dneto,
@dneto@mastodon.gamedev.place avatar

@litherum figured it was that.

thephd, to random
@thephd@pony.social avatar

It's time.

RAII in C, and why nobody's getting it right with the increasingly "simple" juggling that keeps getting tossed to me like table scraps for a dog.

The Pasture | Why Not Just Do Simple C++ RAII in C? | https://thephd.dev/just-put-raii-in-c-bro-please-bro-just-one-more-destructor-bro-cmon-im-good-for-it

dneto,
@dneto@mastodon.gamedev.place avatar

@gob @gfxstrand @thephd

Yep. This is the dumbest part of Clspv. By dumb I mean the highest difficulty-to-intrinsic-value ratio, and often error prone.
The folks pushing this change have waved away the concerns expressed by the GPU community. Right there in the RFC discussion.

dneto,
@dneto@mastodon.gamedev.place avatar

@gob @gfxstrand @thephd

I know this isn't your main point but
"10 hours" is far too low.

If you're not writing thousands of tests you're not building a production compiler.
And the C++ spec is over 1000 pages.

If you didn't test it it doesn't work.

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

Programming languages are cultural artifacts. Their value lies in their usage by a community.

litherum, to random
@litherum@masto.ai avatar

I think it’s semi-hilarious that there’s a blog post going around which basically says Metal Shading Language is by far the best shading language (without actually saying it)

https://xol.io/blah/death-to-shading-languages/

Also the author gets bonus points for mentioning WGSL, but the loses them all again for complaining that WGSL isn’t more expressive than the languages it compiles to

dneto,
@dneto@mastodon.gamedev.place avatar

@gob @litherum

The machine readable grammar is in the WGSL spec source.

https://github.com/gpuweb/gpuweb/blob/main/wgsl/syntax.bnf

I even wrote a strict LALR(1) verifier to make sure we never broke that property. That's also in that source subdir. Written in Python.

dneto,
@dneto@mastodon.gamedev.place avatar

@litherum @gob

That proposal seemed focused on ergonomics but entirely missed the interesting/hard parts of shading languages: uniformity and the implications thereof. We were talking past each other.
(Even today almost all programmers assume wrong things about how subgroup operations behave, including folks who should know better.)

Also nobody wanted a NEW language. I still get flack for this. Obligatory https://xkcd.com/927/

tojiro, to random
@tojiro@mastodon.social avatar

It bothers me far more than it should that sharps and flats are stateful in musical notation.

dneto,
@dneto@mastodon.gamedev.place avatar

@tojiro
But only until the end of the bar!

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

NEWS FROM CANADA

First, Happy Victoria Day. Yes we take a day off for Queen Victoria's birthday.

Second here's a first person store of a small theft and a good outcome. Also, the police helped!

https://www.cbc.ca/news/canada/ottawa/power-tool-scam-first-person-ottawa-1.7195730

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

I use "circle to search" all the time now. It's so much easier.

dneto,
@dneto@mastodon.gamedev.place avatar

@oblomov
New Android feature. There's always solid line at the bottom of the screen. you tap that and the whole.screen goes ghost-like. You circle a part of an image for an image search, or circle or strike through words or a phrase to do a Google text search. The results overlay the bottom half of the screen. You can refine or restart, or discard the whole thing. The key is how easy it is to do without needing to get to a new screen

dneto,
@dneto@mastodon.gamedev.place avatar
dneto,
@dneto@mastodon.gamedev.place avatar
litherum, to random
@litherum@masto.ai avatar

For a population of people who grew up up watching Alien movies, “Hugging Face” may just be the worst name a company could possibly have

https://en.wikipedia.org/wiki/Hugging_Face

dneto,
@dneto@mastodon.gamedev.place avatar

@tojiro @kainino0x @litherum

+1 Alien is so good. Nails the creepy aesthetic.

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

I think people get tied up in knots when trying to parse SPIR-V with structured control flow.

You gotta do it in reverse structured post-order.

Once you lay out the basic blocks in that order, the nested control constructs map to intervals over that list. (:galaxy brain:)

For details, see Tint's SPIR-V to WGSL translator.

https://dawn.googlesource.com/dawn/+/refs/heads/main/src/tint/lang/spirv/reader/ast_parser/function.cc#72

dneto,
@dneto@mastodon.gamedev.place avatar

(There, saved me a blog post.)

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

This week's project: Reworking NVK cbuf support. We've had a lot of issues with too much internal stalling and I think a lot of them come down to the fact that we're re-binding cbufs every draw call.

My plan for root constants, is to do inline updates with the LOAD_CONSTANT_BUFFER command. I don't know how much of a difference there is but I strongly suspect this pipelines much better.

For bound cbufs, I'm planning to just make our dirty tracking way more competent.

We'll see how it goes!

dneto,
@dneto@mastodon.gamedev.place avatar

@gfxstrand

Do you have a benchmark suite that you trust and curate? It would take the guesswork out of these tradeoffs. (Of course, mainly pushing it to the curation process.)

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