This is one epic Xbox
Follow @Xbox & @FF_XIV_EN & RT with #XboxFFXIVSweepstakes for a chance to win a custom FINAL FANTASY XIV console bundle, Complete Collector's Edition game & 12-month Xbox Game Pass Ultimate Membership
Ages 18+. Ends 3/28/24. Rules: https://t.co/yc032cRgRF
@SebAaltonen I have a lot less experience with D3D compared to Meral/Vulkan and I always find D3D’s language choices mix me up - are these work graphs more or less analogous to Metal’s indirect command buffers? Always felt odd how much more flexible they are than eg vkCmdDrawIndirectCount.
@Rhed0x @SebAaltonen Descriptor buffers don’t fix any of the actual complexities of descriptor sets, they only put the developer in charge of allocation. Memory layout is still almost completely opaque and aren’t anywhere near as flexible as Metal’s argument buffers.
@SebAaltonen Generally you create your own IOSurface and CVPixelBuffer, which can be used to back an MTLTexture, and also used to back whatever image type the API has. We use this a lot to interface Metal with CoreML. VTCreateCGImageFromPixelBuffer looks like the key.
@CodePotrick@SebAaltonen Descriptor buffers are allowed to have distinct rules for how samplers are encoded, different types can have different sizes, have distinct binding API, and aren't compatible with sets. Similar concept but Vulkan is extremely more complex.
@SebAaltonen These matrices have (0,0,0,1) last row, not last column, so affine representation is only beneficial with row-major storage. Since most software uses column major storage, it's better to have a bit of waste than use float3s, or rework your code so it doesn't look like the math.
@SebAaltonen Mesh shaders are available on older GPUs too though, that line confused me a bit. I guess it's more low-level support and A16/M2/etc emulates somewhat?
@matiasgoldberg@pATjako@reduzio It does feel as though so many Vulkan extensions are dancing around the idea of tile shaders without ever going all the way.
@SebAaltonen Metal is by far the nicest of the modern APIs, and I'll get flak for saying this, but the most transparent too. It's got almost no abstractions over Apple GPUs (partial render passes the main exception I know of) as shown by Asahi et al research.
@ParallelsCares Does Parallels 19 support DirectX 12? Also does “Run professional graphics-intensive Windows applications” now suggest that hardware acceleration is limited to subscription-only Pro Edition and no longer available in Standard?
@CollectionsPDB Getting an error trying to set a list item in Source script
let cat = app.listItem.suggest(id, category)
doc.setListItem(cat, "category”)
“TypeError: doc.setListItem is not a function. (In 'doc.setListItem(cat, “category”)’, 'doc.setListItem' is undefined)"
@SebAaltonen Pretty sure our Metal backend is smaller than OpenGL too, but there are fallbacks for optional extensions (like bindless), CUDA/CL interop, and some complicated logic to deal with threading (particularly when there is no context on the thread) that Metal doesn't have to deal with
@SebAaltonen For most commands that take target, the actual target is at best a hint to the driver. Here you've just reallocated the same buffer three times. You can just allocate it once and bind it to multiple targets for usage.
@SebAaltonen I've solved this by bundling PSO+VAO together into our "pipeline" abstraction (which for Metal contains just PSO) and speccing that vertex/element buffers are only valid so long as the same pipeline is bound. The actual buffer bindings are then constantly dirtied but what odds.