From aef260d9074e585e9cee90a9cdf719aa064a013d Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 27 Jul 2026 01:52:23 -0400 Subject: [PATCH] docs(twitter): add 1859395250537595016 corpus (NOTimothyLottes hard-core shader dev mega-thread) 33-post thread, 13 PNGs, the canonical 'shader dev' walkthrough. Reads FXAA 3.11 / FSR1 / Unity STP, names the permutations pattern (32-bit / packed 16-bit / implicit mediump / MIN-MAX sampling). DXIL no bitfield ops vs SPIR-V (HLSL pre-processing on non-Xbox = fail). 16-bit perf: don't permute from 32-bit float constants (instant PC perf death), alias FP16 as UINT32 binary blobs. Designing shaders like GPU assembly, AMD RDNA2 as the design target. Defines map logic to associated instruction (fma, bitfieldExtract), all-ints-unsigned convention with SI1_I1()-style bitcast macros, 3-letter type macros. Compiler pattern-match bugs: tried always-UINT4 bitcast, didn't work; native types except waveops. Argument passing SSA state explosion: inout uint4[16] (all VGPRs) didn't end well - shader langs support globals, use them. Next level: mostly globals with type- bitcast aliasing; x86-64 union-of-structs-on-globals as the GPU calling ABI. Foundation for the SPIR-V-from-data + cart-file work (Aug 2025). --- .../media/1859369992355021246_1.png | Bin 0 -> 5251 bytes .../media/1859372015670432237_1.png | Bin 0 -> 15001 bytes .../media/1859373265380069827_1.png | Bin 0 -> 9628 bytes .../media/1859373919146213617_1.png | Bin 0 -> 21028 bytes .../media/1859374673953239528_1.png | Bin 0 -> 9996 bytes .../media/1859376826709311577_1.png | Bin 0 -> 5582 bytes .../media/1859377684104536314_1.png | Bin 0 -> 3678 bytes .../media/1859378670105674093_1.png | Bin 0 -> 19189 bytes .../media/1859381761685221605_1.png | Bin 0 -> 19604 bytes .../media/1859382640534516057_1.png | Bin 0 -> 13449 bytes .../media/1859387770617110636_1.png | Bin 0 -> 4814 bytes .../media/1859388846481322425_1.png | Bin 0 -> 1725 bytes .../media/1859389468672680384_1.png | Bin 0 -> 5419 bytes docs/twitter/1859395250537595016/thread.md | 173 ++++++ .../1859395250537595016/thread_data.json | 560 ++++++++++++++++++ 15 files changed, 733 insertions(+) create mode 100644 docs/twitter/1859395250537595016/media/1859369992355021246_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859372015670432237_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859373265380069827_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859373919146213617_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859374673953239528_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859376826709311577_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859377684104536314_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859378670105674093_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859381761685221605_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859382640534516057_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859387770617110636_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859388846481322425_1.png create mode 100644 docs/twitter/1859395250537595016/media/1859389468672680384_1.png create mode 100644 docs/twitter/1859395250537595016/thread.md create mode 100644 docs/twitter/1859395250537595016/thread_data.json diff --git a/docs/twitter/1859395250537595016/media/1859369992355021246_1.png b/docs/twitter/1859395250537595016/media/1859369992355021246_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c283b4e62e53d5bb0ce4c9a24c5fb6d8cf360d4 GIT binary patch literal 5251 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 MY8h&ls@sMC4YEL-%>V!Z literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/media/1859372015670432237_1.png b/docs/twitter/1859395250537595016/media/1859372015670432237_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd36f742a10c76458016d8c88798d8fdf422793 GIT binary patch literal 15001 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 literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/media/1859373265380069827_1.png b/docs/twitter/1859395250537595016/media/1859373265380069827_1.png new file mode 100644 index 0000000000000000000000000000000000000000..230e14d7fa49e8918bdcaf0beb231cbe7776f9f6 GIT binary patch literal 9628 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 literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/media/1859376826709311577_1.png b/docs/twitter/1859395250537595016/media/1859376826709311577_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a4b23a9451b334f0dfefbc54f694a864e80a29 GIT binary patch literal 5582 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 literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/media/1859377684104536314_1.png b/docs/twitter/1859395250537595016/media/1859377684104536314_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c823799dd450c7368db61c1b8175feedfdc396e4 GIT binary patch literal 3678 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 literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/media/1859387770617110636_1.png b/docs/twitter/1859395250537595016/media/1859387770617110636_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8edc6e9b357114b20e68987721f8c1c1f7aa231c GIT binary patch literal 4814 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 literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/media/1859388846481322425_1.png b/docs/twitter/1859395250537595016/media/1859388846481322425_1.png new file mode 100644 index 0000000000000000000000000000000000000000..80fea98ae691f57d21215bafd5b216079acfeeba GIT binary patch literal 1725 zcmYjRdo)|=7C+j-3^K-$_R_~yy+Hs(R1SnLqli^{u`3{`UIq$8Y_<-$Q}| zFa{O|003YD3BF_i&~Zku(U%+1NLo%@2x`8F^&)uz!2LqQn#AVegJ^UV*ub*3ILlE%f*L0&=2mvkdh03QaB7R-CWDM)<~8I%k)ASp`-<7 z`mHsYh5ydV9%4nO9&BBudLJcT_zd*iL(~^zvvA+bt9=K8e!ai9d*d-sC z;@GA0^y!8~_F^zk2iy!QNEL>N{U@|o6ipXl8mM6-5#*W(I?@FY6)qOy*ZL6V**nbC z_YuaDO~q61{~PhBuNh+LRy@2Rf__btu&CSBv~>uPry6&Ikm=~NbTRw*E)hf<%5Mbs z8z4wEMC~ZRYMOpG%D?_b41KuT?_LN&9&Sq7%QLr+w!>X8ZRa>LSu>dSlKBXR$95keXulH=0R`Hz?Q30#~0*$L@cy8)={7 zW8QRi-=E?KZqiC-9&<>@&wG(KfplHdPFj+plbvj?H&GC38wlh|K zwx?!j@k3j9A_z5L3ZYX!&uaE@gEzaov`k1|FAIB;e)JiHX;&~HIEv)vIL)_0kBLib z5VZKWUF1+*@Ngt;GTco$jPQ$j$hU|+!p}kbY=_r1nx%R~^G0bj6G7&QVDc!!kTAfx zAZ%DWj6GZ;z7iy~>go=cHLS?IlpVJo6IU-lwy*)hEci9DY5X&YyjL!c4G!jYST$@v znExAAP5WmO$en$OGCMYDC1p&mu{7B)5c|R)wxaxGUi?iw_|)3VNDW_(e?fVPJKF(= zsWfP^>-JM{u|BwYohl~gVIOCMl59!U3njMSyE9W8SCSovFS66EU#A<`UpUg2bsD#l zBxNonw?B3F@8J)Bl%; z)04Dk=TXD}0h9qHP=uR|f4n%f?I}CD;MCYLHdq+XQVh}upkWTFg`lZt`FoUISHjnJ zH&OiL^C?vKCOJi2DMP+nS(5)HPapQ5llD1`;7-r1T8<o5z%BvUF zw)h*5T|)SB$GdBB%6bI36K^Ae5|}B}sUwP_WN^;pI(=^+yv^cr(p_6gGc+?=b48$r ztKv)C6HM_SND~$)Ea(FpQs|ee=uz`5o6Js_72EExC^n63q8a@uX!UmFTk5$l@;hZvQaj6~$!&XOy$5)(9T5Uy8Zwa6j-cq1nkT2i+*e`zode3Nl literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/media/1859389468672680384_1.png b/docs/twitter/1859395250537595016/media/1859389468672680384_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8be6db27315c8af0ad1c3c0ac8ea7cf7ba0b47fa GIT binary patch literal 5419 zcmbVQcT|(vw$F^$GANdzsEAk*1!+P+O2S2&fCTAEs3XWEF$4%0ATgkbqavVm0)deh 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 literal 0 HcmV?d00001 diff --git a/docs/twitter/1859395250537595016/thread.md b/docs/twitter/1859395250537595016/thread.md new file mode 100644 index 00000000..2fcb91b0 --- /dev/null +++ b/docs/twitter/1859395250537595016/thread.md @@ -0,0 +1,173 @@ +--- +title: "[32] oh damn [32], should probably stop now, until next time." +author: "NOTimothyLottes" +handle: "@NOTimothyLottes" +post_url: "https://x.com/NOTimothyLottes/status/1859395250537595016" +post_id: "1859395250537595016" +timestamp: "2024-11-21 00:35:48" +post_count: 33 +reply_count: 0 +repost_count: 0 +like_count: 8 +view_count: 676 +--- + +# @NOTimothyLottes — [32] oh damn [32], should probably stop now, until next time. + +## Post 1 (2024-11-20 22:51:23) + +[0] Been wanting to do this for a long time, a thread on hard-core shader development. Something that digs into what I've learned and applied over the years. Along with the evolution of the strange syntax I use when writing shaders ... + +## Post 2 (2024-11-20 22:55:26) — reply to Post 1 + +[1] Lets start at one of the early ones, FXAA 3.11. Someone is hosting that here: https://gist.github.com/kosua20/0c506b81b3812ac900048059d2383126 ... most lines, it's an easy map to NV's arch which has predicated instructions (red is the predicate). Many lines are 1:1 mappings with physical HW instructions. + +![Media 1](./media/1859369992355021246_1.png) + +## Post 3 (2024-11-20 23:03:28) — reply to Post 2 + +[2] Looking at FSR1: https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/ffx-fsr/ffx_fsr1.h - that had 3 permutations {32-bit, 16-bit unpacked, 16-bit packed}, where the packed one maps to how AMD's packed instructions work (everything explicitly packed) + +![Media 1](./media/1859372015670432237_1.png) + +## Post 4 (2024-11-20 23:08:26) — reply to Post 3 + +[3] Onto STP: https://github.com/Unity-Technologies/Graphics/blob/27341ce4f5c8853d7f15e9420bff499f1087aceb/Packages/com.unity.render-pipelines.core/Runtime/STP/Stp.hlsl - A different set of permutations {32-bit, packed 16-bit} then {implicit mediump vs explicit} in the 32-bit (generic) permutation via types like StpMF4 which aim to allow a compiler on mobile to get some 16-bit register savings + +![Media 1](./media/1859373265380069827_1.png) + +## Post 5 (2024-11-20 23:11:02) — reply to Post 4 + +[4] Notice for 16-bit path, everything again is explicitly packed (unlike the 32-bit path). And GLSL to SPIR-V would get explicit packing to the IHV driver since SPIR-V has explicit vector types (unlike DX, which was an insane problem). Example, the reprojection filtering below. + +![Media 1](./media/1859373919146213617_1.png) + +## Post 6 (2024-11-20 23:14:02) — reply to Post 5 + +[5] Then STP had defines to work out differences in sampling capability (like supporting MIN/MAX sampling with UINT or not, or supporting immediate offsets or not). Example in the code doing {z,motion} UINT32 packed nearest dilation: + +![Media 1](./media/1859374673953239528_1.png) + +## Post 7 (2024-11-20 23:22:35) — reply to Post 6 + +[6] The largest portability nightmare was mixing explicit FP16 with wave ops! So many compiler bugs across vendors = so many permutations in the code. The 32-bit path had to have a conversion from 'StpMF4' (possible implicit medium precision), to 'StpF4' explicit 32-bit. + +![Media 1](./media/1859376826709311577_1.png) + +## Post 8 (2024-11-20 23:26:00) — reply to Post 7 + +[7] Some of perf death problems had been that DXIL didn't have bitfield ops (unlike SPIR-V), HLSL depends on IHV compilers somehow finding and pattern matching stuff like the crap below (which is MANY OPS to 1 OPCODE). So pre-processing through HLSL on non-Xbox platforms = fail! + +![Media 1](./media/1859377684104536314_1.png) + +## Post 9 (2024-11-20 23:29:55) — reply to Post 8 + +[8] Go into the shader which is doing wave ops, and the true nightmare of platform workarounds becomes apparent https://github.com/Unity-Technologies/Graphics/blob/27341ce4f5c8853d7f15e9420bff499f1087aceb/Packages/com.unity.render-pipelines.core/Runtime/STP/StpSetup.compute - LSD/waveop permutations, 32-bit/16-bit in 16-bit path, etc + +![Media 1](./media/1859378670105674093_1.png) + +## Post 10 (2024-11-20 23:36:48) — reply to Post 9 + +[9] So yeah, even in modern times you can hit paths in compilers and toolchains that well never got tested because no one had tried it and tried shipping with it. And I think this might hint that relatively few actually do this level of crazy + +## Post 11 (2024-11-20 23:40:23) — reply to Post 10 + +[10] Part of the formula for getting great gains with 16-bit is simply the register savings. It wouldn't be possible to do good 4x4 kernel lanczos inside a TAA without packed 16-bit support (it's 64 values on load without thinking about all the other mid-algorithm data) ... + +## Post 12 (2024-11-20 23:42:12) — reply to Post 11 + +[11] Looking at STP again, there is a dering, which works with the {min,max} of the near 2x2. If the HW has MIN/MAX sampling, it can fetch that, which means a lot more than 64 values, and if not they need intermediate ALU min/max, which is extra state ... + +![Media 1](./media/1859381761685221605_1.png) + +## Post 13 (2024-11-20 23:45:41) — reply to Post 12 + +[12] Mobile hardware is so register starved (probably due to all that SRAM area going to tiles) that it wasn't possible to do good reprojection filtering PERIOD even with FP16. So STP had a crippled compromise that did bilinear in one direction, and lanczos in the other axis + +![Media 1](./media/1859382640534516057_1.png) + +## Post 14 (2024-11-20 23:47:49) — reply to Post 13 + +[13] Huge wake up call to mobile HW vendors, if you don't match VGPR capacity of PCs, you can never take on where PC workloads will get to. Now given both NV and AMD have packed 16-bit, it is a great time to push pass merging and avoid DRAM traffic by doing more in one shader + +## Post 15 (2024-11-20 23:50:55) — reply to Post 14 + +[14] Another part of the 16-bit perf puzzle is to not use 16-bit FP16 in constants explicitly, but only package them up as aliased as UINT32 binary blobs. And for portable systems that still need 32-bit fallbacks, always build both a packed 16-bit and 32-bit set of constants. + +## Post 16 (2024-11-20 23:52:28) — reply to Post 15 + +[15] So many people tried to 16-bit permute things working from 32-bit float constants, and on PC that is instant perf death. Sure some mobile hardware can do the conversions for lower cost, and some mobile HW could pre-amble the conversions if not, but that isn't perf portable + +## Post 17 (2024-11-20 23:55:35) — reply to Post 16 + +[16] Switching gears. So STP didn't get the most hardcore way I like to write shaders, and I've had a bunch of different permutations of ideas tried over the years ... specifically how to make the code more like GPU assembly! + +## Post 18 (2024-11-20 23:57:03) — reply to Post 17 + +[17] Looking like assembly as in making it exactly clear what the lines map to in HW OPCODEs, and what the variable map to in REGISTERS. So you are designing to what the hardware could do, even if the compiler cannot keep up + +## Post 19 (2024-11-20 23:59:37) — reply to Post 18 + +[18] Now it's true that NV and AMD HW are quite different in some respects (NV is predicated, and has generic 3 op logic ops, etc), so ultimately one has to pick their shader language abstraction based on what they want to target the most https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference (NV ISA docs) + +## Post 20 (2024-11-21 00:01:08) — reply to Post 19 + +[19] Since AMD's docs are more complete, and I like to make sure a console port is possible and would be as fast as possible, I prefer to think through all my shaders as if they are getting direct mapped to AMD's RDNA2 these days: https://www.amd.com/content/dam/amd/en/documents/radeon-tech-docs/instruction-set-architectures/rdna2-shader-instruction-set-architecture.pdf + +## Post 21 (2024-11-21 00:06:04) — reply to Post 20 + +[20] So I usually do a define that maps logic directly to what the associated instruction would be. Some of these actually map to shading language intrinsics already like fma() or bitfieldExtract(). Then write all my shader code using these defines. Example below for the defines + +![Media 1](./media/1859387770617110636_1.png) + +## Post 22 (2024-11-21 00:10:21) — reply to Post 21 + +[21] Like to use ASM like convention for {signed, unsigned}, that all integers are unsigned, and only get converted to signed when required inside the define for a specific opcode (like signed or unsigned bitfield extract). Bit casting (aliasing) is done via SI1_I1() style macros + +![Media 1](./media/1859388846481322425_1.png) + +## Post 23 (2024-11-21 00:12:49) — reply to Post 22 + +[22] And I reduce all types to very simple 3 letter macros of which are described below. I use the same naming convention in CPU land as well. This helps keep code compact and easy to read IMO (highly subjective yes) + +![Media 1](./media/1859389468672680384_1.png) + +## Post 24 (2024-11-21 00:16:45) — reply to Post 23 + +[23] One thing I struggle with to this day is compiler bitcast aliasing perf bugs. Meaning once I tried to always only use UINT4 types everywhere, and then wrap all OPCODE defines in bitcasting defines, that didn't go so well (looking at disassembly on AMD PC). + +## Post 25 (2024-11-21 00:18:13) — reply to Post 24 + +[24] Compilers depend a lot on pattern matching to NOP stuff, and well there are bugs, lots of bugs. So for the sake of portability, with the exception of {unsigned/signed} bitcasting, I use the native types when possible (no packed-16-bit/32-bit aliasing) exception of waveops + +## Post 26 (2024-11-21 00:21:55) — reply to Post 25 + +[25] Another aspect of compiler problems is argument passing to function calls causing SSA state explosions, because it's "copy semantics" as defined in the langs. Once I did inout uint4[16] (all VGPRs) as my only argument to all functions. Didn't end well! + +## Post 27 (2024-11-21 00:23:26) — reply to Post 26 + +[26] Someone on twitter (or was it bsky or mast?) had been doing a one shader game. And addressing these kinds of problems, and reminded us, YES the shader languages support global variables. No need to pass them into function! (bingo) + +## Post 28 (2024-11-21 00:24:52) — reply to Post 27 + +[27] We have been so seasoned to dislike globals in the past few decades due to well probably early mutli-window programming styles, that it is easy to forget you can just do globals, and they are fast at tool/compile time. + +## Post 29 (2024-11-21 00:26:42) — reply to Post 28 + +[28] I think the next level up of this design is to go to mostly global variables, but since the shader languages don't support global unions, then have different sets of globals when one needs to do type bitcast aliasing (which is very common with packed 16-bit and 64-bit logic) + +## Post 30 (2024-11-21 00:28:59) — reply to Post 29 + +[29] I still think the 'fix' for the shader compiler SSA state explosion mapping back to registers problem is to pass in explicit aliasing hints to the vendor compilers, so they have a better base guess at register allocation. But I doubt vendors would get on board with that + +## Post 31 (2024-11-21 00:31:24) — reply to Post 30 + +[30] My personal x86-64 languages typically worked with unions of structs on globals. Where each struct in the union was a different aliased meaning to the HW registers, and functions had been associated with a given struct in the union. So no stacks or argument passing. + +## Post 32 (2024-11-21 00:33:27) — reply to Post 31 + +[31] That kind of setup for the GPU is ideal IMO (at least for the type of stuff I do). You can link. Because the union struct for the registers is the calling ABI, and never moves (no stack). So code sharing works amazingly well. And avoiding register state explosion is built in + +## Post 33 (2024-11-21 00:35:48) — reply to Post 32 + +[32] oh damn [32], should probably stop now, until next time. diff --git a/docs/twitter/1859395250537595016/thread_data.json b/docs/twitter/1859395250537595016/thread_data.json new file mode 100644 index 00000000..36ffff3a --- /dev/null +++ b/docs/twitter/1859395250537595016/thread_data.json @@ -0,0 +1,560 @@ +{ + "root_post_id": "1859395250537595016", + "posts": [ + { + "post_id": "1859368974351274470", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[0] Been wanting to do this for a long time, a thread on hard-core shader development. Something that digs into what I've learned and applied over the years. Along with the evolution of the strange syntax I use when writing shaders ...", + "timestamp": "2024-11-20 22:51:23", + "media_urls": [], + "reply_to_id": null, + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 22, + "like_count": 195, + "view_count": 19712 + } + }, + { + "post_id": "1859369992355021246", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[1] Lets start at one of the early ones, FXAA 3.11. Someone is hosting that here: https://gist.github.com/kosua20/0c506b81b3812ac900048059d2383126 ... most lines, it's an easy map to NV's arch which has predicated instructions (red is the predicate). Many lines are 1:1 mappings with physical HW instructions.", + "timestamp": "2024-11-20 22:55:26", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3OqZkWsAAeP9s?format=png&name=orig" + ], + "reply_to_id": "1859368974351274470", + "quote_of_id": null, + "metrics": { + "reply_count": 2, + "repost_count": 1, + "like_count": 10, + "view_count": 2078 + } + }, + { + "post_id": "1859372015670432237", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[2] Looking at FSR1: https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/ffx-fsr/ffx_fsr1.h - that had 3 permutations {32-bit, 16-bit unpacked, 16-bit packed}, where the packed one maps to how AMD's packed instructions work (everything explicitly packed)", + "timestamp": "2024-11-20 23:03:28", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3QjEiWYAADo14?format=png&name=orig" + ], + "reply_to_id": "1859369992355021246", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 1, + "like_count": 10, + "view_count": 1624 + } + }, + { + "post_id": "1859373265380069827", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[3] Onto STP: https://github.com/Unity-Technologies/Graphics/blob/27341ce4f5c8853d7f15e9420bff499f1087aceb/Packages/com.unity.render-pipelines.core/Runtime/STP/Stp.hlsl - A different set of permutations {32-bit, packed 16-bit} then {implicit mediump vs explicit} in the 32-bit (generic) permutation via types like StpMF4 which aim to allow a compiler on mobile to get some 16-bit register savings", + "timestamp": "2024-11-20 23:08:26", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3SFXTXoAEt4tX?format=png&name=orig" + ], + "reply_to_id": "1859372015670432237", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 4, + "view_count": 1529 + } + }, + { + "post_id": "1859373919146213617", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[4] Notice for 16-bit path, everything again is explicitly packed (unlike the 32-bit path). And GLSL to SPIR-V would get explicit packing to the IHV driver since SPIR-V has explicit vector types (unlike DX, which was an insane problem). Example, the reprojection filtering below.", + "timestamp": "2024-11-20 23:11:02", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3SmjPWMAEMX_d?format=png&name=orig" + ], + "reply_to_id": "1859373265380069827", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 5, + "view_count": 1397 + } + }, + { + "post_id": "1859374673953239528", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[5] Then STP had defines to work out differences in sampling capability (like supporting MIN/MAX sampling with UINT or not, or supporting immediate offsets or not). Example in the code doing {z,motion} UINT32 packed nearest dilation:", + "timestamp": "2024-11-20 23:14:02", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3TW0oWIAArDjw?format=png&name=orig" + ], + "reply_to_id": "1859373919146213617", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 1266 + } + }, + { + "post_id": "1859376826709311577", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[6] The largest portability nightmare was mixing explicit FP16 with wave ops! So many compiler bugs across vendors = so many permutations in the code. The 32-bit path had to have a conversion from 'StpMF4' (possible implicit medium precision), to 'StpF4' explicit 32-bit.", + "timestamp": "2024-11-20 23:22:35", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3UTC_WcAAyc5J?format=png&name=orig" + ], + "reply_to_id": "1859374673953239528", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 1237 + } + }, + { + "post_id": "1859377684104536314", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[7] Some of perf death problems had been that DXIL didn't have bitfield ops (unlike SPIR-V), HLSL depends on IHV compilers somehow finding and pattern matching stuff like the crap below (which is MANY OPS to 1 OPCODE). So pre-processing through HLSL on non-Xbox platforms = fail!", + "timestamp": "2024-11-20 23:26:00", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3V5wGW8AADAju?format=png&name=orig" + ], + "reply_to_id": "1859376826709311577", + "quote_of_id": null, + "metrics": { + "reply_count": 2, + "repost_count": 0, + "like_count": 5, + "view_count": 1310 + } + }, + { + "post_id": "1859378670105674093", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[8] Go into the shader which is doing wave ops, and the true nightmare of platform workarounds becomes apparent https://github.com/Unity-Technologies/Graphics/blob/27341ce4f5c8853d7f15e9420bff499f1087aceb/Packages/com.unity.render-pipelines.core/Runtime/STP/StpSetup.compute - LSD/waveop permutations, 32-bit/16-bit in 16-bit path, etc", + "timestamp": "2024-11-20 23:29:55", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3W143XEAEq6LS?format=png&name=orig" + ], + "reply_to_id": "1859377684104536314", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 5, + "view_count": 1289 + } + }, + { + "post_id": "1859380404781814109", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[9] So yeah, even in modern times you can hit paths in compilers and toolchains that well never got tested because no one had tried it and tried shipping with it. And I think this might hint that relatively few actually do this level of crazy", + "timestamp": "2024-11-20 23:36:48", + "media_urls": [], + "reply_to_id": "1859378670105674093", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 4, + "view_count": 1827 + } + }, + { + "post_id": "1859381304112054632", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[10] Part of the formula for getting great gains with 16-bit is simply the register savings. It wouldn't be possible to do good 4x4 kernel lanczos inside a TAA without packed 16-bit support (it's 64 values on load without thinking about all the other mid-algorithm data) ...", + "timestamp": "2024-11-20 23:40:23", + "media_urls": [], + "reply_to_id": "1859380404781814109", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 5, + "view_count": 901 + } + }, + { + "post_id": "1859381761685221605", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[11] Looking at STP again, there is a dering, which works with the {min,max} of the near 2x2. If the HW has MIN/MAX sampling, it can fetch that, which means a lot more than 64 values, and if not they need intermediate ALU min/max, which is extra state ...", + "timestamp": "2024-11-20 23:42:12", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3Ze31XAAA94Y1?format=png&name=orig" + ], + "reply_to_id": "1859381304112054632", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 908 + } + }, + { + "post_id": "1859382640534516057", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[12] Mobile hardware is so register starved (probably due to all that SRAM area going to tiles) that it wasn't possible to do good reprojection filtering PERIOD even with FP16. So STP had a crippled compromise that did bilinear in one direction, and lanczos in the other axis", + "timestamp": "2024-11-20 23:45:41", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3afacXQAAFX-c?format=png&name=orig" + ], + "reply_to_id": "1859381761685221605", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 883 + } + }, + { + "post_id": "1859383175849349534", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[13] Huge wake up call to mobile HW vendors, if you don't match VGPR capacity of PCs, you can never take on where PC workloads will get to. Now given both NV and AMD have packed 16-bit, it is a great time to push pass merging and avoid DRAM traffic by doing more in one shader", + "timestamp": "2024-11-20 23:47:49", + "media_urls": [], + "reply_to_id": "1859382640534516057", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 728 + } + }, + { + "post_id": "1859383954551243222", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[14] Another part of the 16-bit perf puzzle is to not use 16-bit FP16 in constants explicitly, but only package them up as aliased as UINT32 binary blobs. And for portable systems that still need 32-bit fallbacks, always build both a packed 16-bit and 32-bit set of constants.", + "timestamp": "2024-11-20 23:50:55", + "media_urls": [], + "reply_to_id": "1859383175849349534", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 699 + } + }, + { + "post_id": "1859384348249608376", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[15] So many people tried to 16-bit permute things working from 32-bit float constants, and on PC that is instant perf death. Sure some mobile hardware can do the conversions for lower cost, and some mobile HW could pre-amble the conversions if not, but that isn't perf portable", + "timestamp": "2024-11-20 23:52:28", + "media_urls": [], + "reply_to_id": "1859383954551243222", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 678 + } + }, + { + "post_id": "1859385131942961199", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[16] Switching gears. So STP didn't get the most hardcore way I like to write shaders, and I've had a bunch of different permutations of ideas tried over the years ... specifically how to make the code more like GPU assembly!", + "timestamp": "2024-11-20 23:55:35", + "media_urls": [], + "reply_to_id": "1859384348249608376", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 678 + } + }, + { + "post_id": "1859385497916932274", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[17] Looking like assembly as in making it exactly clear what the lines map to in HW OPCODEs, and what the variable map to in REGISTERS. So you are designing to what the hardware could do, even if the compiler cannot keep up", + "timestamp": "2024-11-20 23:57:03", + "media_urls": [], + "reply_to_id": "1859385131942961199", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 645 + } + }, + { + "post_id": "1859386143663411375", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[18] Now it's true that NV and AMD HW are quite different in some respects (NV is predicated, and has generic 3 op logic ops, etc), so ultimately one has to pick their shader language abstraction based on what they want to target the most https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference (NV ISA docs)", + "timestamp": "2024-11-20 23:59:37", + "media_urls": [], + "reply_to_id": "1859385497916932274", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 658 + } + }, + { + "post_id": "1859386525982527578", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[19] Since AMD's docs are more complete, and I like to make sure a console port is possible and would be as fast as possible, I prefer to think through all my shaders as if they are getting direct mapped to AMD's RDNA2 these days: https://www.amd.com/content/dam/amd/en/documents/radeon-tech-docs/instruction-set-architectures/rdna2-shader-instruction-set-architecture.pdf", + "timestamp": "2024-11-21 00:01:08", + "media_urls": [], + "reply_to_id": "1859386143663411375", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 674 + } + }, + { + "post_id": "1859387770617110636", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[20] So I usually do a define that maps logic directly to what the associated instruction would be. Some of these actually map to shading language intrinsics already like fma() or bitfieldExtract(). Then write all my shader code using these defines. Example below for the defines", + "timestamp": "2024-11-21 00:06:04", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3fKzqXUAAGnBQ?format=png&name=orig" + ], + "reply_to_id": "1859386525982527578", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 1, + "like_count": 7, + "view_count": 861 + } + }, + { + "post_id": "1859388846481322425", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[21] Like to use ASM like convention for {signed, unsigned}, that all integers are unsigned, and only get converted to signed when required inside the define for a specific opcode (like signed or unsigned bitfield extract). Bit casting (aliasing) is done via SI1_I1() style macros", + "timestamp": "2024-11-21 00:10:21", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3gGUTWQAAZwyX?format=png&name=orig" + ], + "reply_to_id": "1859387770617110636", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 637 + } + }, + { + "post_id": "1859389468672680384", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[22] And I reduce all types to very simple 3 letter macros of which are described below. I use the same naming convention in CPU land as well. This helps keep code compact and easy to read IMO (highly subjective yes)", + "timestamp": "2024-11-21 00:12:49", + "media_urls": [ + "https://pbs.twimg.com/media/Gc3gna_XcAA7PXx?format=png&name=orig" + ], + "reply_to_id": "1859388846481322425", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 4, + "view_count": 601 + } + }, + { + "post_id": "1859390458293547232", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[23] One thing I struggle with to this day is compiler bitcast aliasing perf bugs. Meaning once I tried to always only use UINT4 types everywhere, and then wrap all OPCODE defines in bitcasting defines, that didn't go so well (looking at disassembly on AMD PC).", + "timestamp": "2024-11-21 00:16:45", + "media_urls": [], + "reply_to_id": "1859389468672680384", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 542 + } + }, + { + "post_id": "1859390826054299714", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[24] Compilers depend a lot on pattern matching to NOP stuff, and well there are bugs, lots of bugs. So for the sake of portability, with the exception of {unsigned/signed} bitcasting, I use the native types when possible (no packed-16-bit/32-bit aliasing) exception of waveops", + "timestamp": "2024-11-21 00:18:13", + "media_urls": [], + "reply_to_id": "1859390458293547232", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 528 + } + }, + { + "post_id": "1859391758817247636", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[25] Another aspect of compiler problems is argument passing to function calls causing SSA state explosions, because it's \"copy semantics\" as defined in the langs. Once I did inout uint4[16] (all VGPRs) as my only argument to all functions. Didn't end well!", + "timestamp": "2024-11-21 00:21:55", + "media_urls": [], + "reply_to_id": "1859390826054299714", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 518 + } + }, + { + "post_id": "1859392139790053772", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[26] Someone on twitter (or was it bsky or mast?) had been doing a one shader game. And addressing these kinds of problems, and reminded us, YES the shader languages support global variables. No need to pass them into function! (bingo)", + "timestamp": "2024-11-21 00:23:26", + "media_urls": [], + "reply_to_id": "1859391758817247636", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 4, + "view_count": 522 + } + }, + { + "post_id": "1859392498797261032", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[27] We have been so seasoned to dislike globals in the past few decades due to well probably early mutli-window programming styles, that it is easy to forget you can just do globals, and they are fast at tool/compile time.", + "timestamp": "2024-11-21 00:24:52", + "media_urls": [], + "reply_to_id": "1859392139790053772", + "quote_of_id": null, + "metrics": { + "reply_count": 2, + "repost_count": 1, + "like_count": 5, + "view_count": 803 + } + }, + { + "post_id": "1859392961294836222", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[28] I think the next level up of this design is to go to mostly global variables, but since the shader languages don't support global unions, then have different sets of globals when one needs to do type bitcast aliasing (which is very common with packed 16-bit and 64-bit logic)", + "timestamp": "2024-11-21 00:26:42", + "media_urls": [], + "reply_to_id": "1859392498797261032", + "quote_of_id": null, + "metrics": { + "reply_count": 2, + "repost_count": 0, + "like_count": 1, + "view_count": 594 + } + }, + { + "post_id": "1859393537214763223", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[29] I still think the 'fix' for the shader compiler SSA state explosion mapping back to registers problem is to pass in explicit aliasing hints to the vendor compilers, so they have a better base guess at register allocation. But I doubt vendors would get on board with that", + "timestamp": "2024-11-21 00:28:59", + "media_urls": [], + "reply_to_id": "1859392961294836222", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 615 + } + }, + { + "post_id": "1859394143522521102", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[30] My personal x86-64 languages typically worked with unions of structs on globals. Where each struct in the union was a different aliased meaning to the HW registers, and functions had been associated with a given struct in the union. So no stacks or argument passing.", + "timestamp": "2024-11-21 00:31:24", + "media_urls": [], + "reply_to_id": "1859393537214763223", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 599 + } + }, + { + "post_id": "1859394661518848470", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[31] That kind of setup for the GPU is ideal IMO (at least for the type of stuff I do). You can link. Because the union struct for the registers is the calling ABI, and never moves (no stack). So code sharing works amazingly well. And avoiding register state explosion is built in", + "timestamp": "2024-11-21 00:33:27", + "media_urls": [], + "reply_to_id": "1859394143522521102", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 2, + "view_count": 767 + } + }, + { + "post_id": "1859395250537595016", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "[32] oh damn [32], should probably stop now, until next time.", + "timestamp": "2024-11-21 00:35:48", + "media_urls": [], + "reply_to_id": "1859394661518848470", + "quote_of_id": null, + "metrics": { + "reply_count": 0, + "repost_count": 0, + "like_count": 8, + "view_count": 676 + } + } + ], + "source_url": "https://x.com/NOTimothyLottes/status/1859395250537595016" +} \ No newline at end of file