diff --git a/docs/twitter/1868492851170205803/media/1868444111390249140_1.png b/docs/twitter/1868492851170205803/media/1868444111390249140_1.png new file mode 100644 index 00000000..6d026483 Binary files /dev/null and b/docs/twitter/1868492851170205803/media/1868444111390249140_1.png differ diff --git a/docs/twitter/1868492851170205803/thread.md b/docs/twitter/1868492851170205803/thread.md new file mode 100644 index 00000000..98580efa --- /dev/null +++ b/docs/twitter/1868492851170205803/thread.md @@ -0,0 +1,53 @@ +--- +title: "@axelgneiting @kechogarcia Then there are rough edges to TEXEL_BUFFER" +author: "NOTimothyLottes" +handle: "@NOTimothyLottes" +post_url: "https://x.com/NOTimothyLottes/status/1868492851170205803" +post_id: "1868492851170205803" +timestamp: "2024-12-16 03:06:25" +post_count: 7 +reply_count: 1 +repost_count: 0 +like_count: 1 +view_count: 539 +--- + +# @NOTimothyLottes — @axelgneiting @kechogarcia Then there are rough edges to TEXEL_BUFFER + +## Post 1 (2024-12-15 23:52:44) + +"Buffer zoo" is more about the silly season of things needed on the Vulkan shader side to do what you actually want which is just get instruction intrinsics. Just the layout and SSBO aliasing (below) hints at brutal stupid API/shader design + +![Media 1](./media/1868444111390249140_1.png) + +## Post 2 (2024-12-16 00:18:46) — reply to Post 1 + +@NOTimothyLottes Dxc hlsl sm 6.5 lets you index into ResourceDescriptorHeap directly and cast to whatever resource type. That and mutable vulkan descriptors, you wouldn't need to go the buffer Zoo route.... But then dxc spirv ... + +## Post 3 (2024-12-16 01:20:44) — reply to Post 2 + +@kechogarcia Read<32,64,128>(uint64_t base, uint32_t offset, uint32_t immediate, uint32_t cacheControl, uint32_t format); + +And be done with this stupid mess + +## Post 4 (2024-12-16 02:46:43) — reply to Post 3 + +@NOTimothyLottes @kechogarcia NVidia can't just do random format conversions without it being a texture descriptor I thought? + +## Post 5 (2024-12-16 03:03:19) — reply to Post 4 + +@axelgneiting @kechogarcia Can get the non-conversion {signed/unsigned short/int/long and half/float/double, of {1-4} components}. Which is good enough to start the interface. Then yes for NV you'd need to alias via a storage_texel_buffer to get {10:11:11,10:10:10:2,norm*} + +## Post 6 (2024-12-16 03:06:25) — reply to Post 5 + +@axelgneiting @kechogarcia Then there are rough edges to TEXEL_BUFFER + +9-bit shared 5-bit E -> read only NV, no AMD +sRGB -> yes NV, no AMD + +And a big one: NV limits to 128 M elements +{512 MiB,1GiB,2GiB} buffer size limits for {32,64,128}-bits respectively + +## Post 7 (2024-12-16 03:48:28) — reply to Post 6 + +@NOTimothyLottes @kechogarcia I'm well aware. It's really curious they still stick to this design after so many years. diff --git a/docs/twitter/1868492851170205803/thread_data.json b/docs/twitter/1868492851170205803/thread_data.json new file mode 100644 index 00000000..8370a94c --- /dev/null +++ b/docs/twitter/1868492851170205803/thread_data.json @@ -0,0 +1,120 @@ +{ + "root_post_id": "1868492851170205803", + "posts": [ + { + "post_id": "1868444111390249140", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "\"Buffer zoo\" is more about the silly season of things needed on the Vulkan shader side to do what you actually want which is just get instruction intrinsics. Just the layout and SSBO aliasing (below) hints at brutal stupid API/shader design", + "timestamp": "2024-12-15 23:52:44", + "media_urls": [ + "https://pbs.twimg.com/media/Ge4LfQvWwAAwgwz?format=png&name=orig" + ], + "reply_to_id": null, + "quote_of_id": null, + "metrics": { + "reply_count": 2, + "repost_count": 1, + "like_count": 50, + "view_count": 5125 + } + }, + { + "post_id": "1868450660485919082", + "author": "Kecho", + "handle": "kechogarcia", + "text": "@NOTimothyLottes Dxc hlsl sm 6.5 lets you index into ResourceDescriptorHeap directly and cast to whatever resource type. That and mutable vulkan descriptors, you wouldn't need to go the buffer Zoo route.... But then dxc spirv ...", + "timestamp": "2024-12-16 00:18:46", + "media_urls": [], + "reply_to_id": "1868444111390249140", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 3, + "view_count": 1699 + } + }, + { + "post_id": "1868466254849212427", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "@kechogarcia Read<32,64,128>(uint64_t base, uint32_t offset, uint32_t immediate, uint32_t cacheControl, uint32_t format);\n\nAnd be done with this stupid mess", + "timestamp": "2024-12-16 01:20:44", + "media_urls": [], + "reply_to_id": "1868450660485919082", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 17, + "view_count": 23771 + } + }, + { + "post_id": "1868487894169796789", + "author": "Axel Gneiting", + "handle": "axelgneiting", + "text": "@NOTimothyLottes @kechogarcia NVidia can't just do random format conversions without it being a texture descriptor I thought?", + "timestamp": "2024-12-16 02:46:43", + "media_urls": [], + "reply_to_id": "1868466254849212427", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 1625 + } + }, + { + "post_id": "1868492072166326484", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "@axelgneiting @kechogarcia Can get the non-conversion {signed/unsigned short/int/long and half/float/double, of {1-4} components}. Which is good enough to start the interface. Then yes for NV you'd need to alias via a storage_texel_buffer to get {10:11:11,10:10:10:2,norm*}", + "timestamp": "2024-12-16 03:03:19", + "media_urls": [], + "reply_to_id": "1868487894169796789", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 1654 + } + }, + { + "post_id": "1868492851170205803", + "author": "NOTimothyLottes", + "handle": "NOTimothyLottes", + "text": "@axelgneiting @kechogarcia Then there are rough edges to TEXEL_BUFFER\n\n9-bit shared 5-bit E -> read only NV, no AMD\nsRGB -> yes NV, no AMD\n\nAnd a big one: NV limits to 128 M elements\n{512 MiB,1GiB,2GiB} buffer size limits for {32,64,128}-bits respectively", + "timestamp": "2024-12-16 03:06:25", + "media_urls": [], + "reply_to_id": "1868492072166326484", + "quote_of_id": null, + "metrics": { + "reply_count": 1, + "repost_count": 0, + "like_count": 1, + "view_count": 539 + } + }, + { + "post_id": "1868503435299205194", + "author": "Axel Gneiting", + "handle": "axelgneiting", + "text": "@NOTimothyLottes @kechogarcia I'm well aware. It's really curious they still stick to this design after so many years.", + "timestamp": "2024-12-16 03:48:28", + "media_urls": [], + "reply_to_id": "1868492851170205803", + "quote_of_id": null, + "metrics": { + "reply_count": 0, + "repost_count": 0, + "like_count": 1, + "view_count": 434 + } + } + ], + "source_url": "https://x.com/NOTimothyLottes/status/1868492851170205803" +} \ No newline at end of file