# Render targets that exist only in tile memory - [Vulkan: VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT](https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageUsageFlagBits.html) + [VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT](https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryPropertyFlagBits.html) - [Metal: MTLStorageMode.memoryless](https://developer.apple.com/documentation/metal/mtlstoragemode/memoryless) - D3D12: Not possible, needs allocation - WebGPU: Not possible, needs allocation # Render passes - Vulkan: [Dynamic rendering](https://docs.vulkan.org/samples/latest/samples/extensions/dynamic_rendering/) - Metal: [MTLRenderCommandEncoder](https://developer.apple.com/documentation/metal/mtlrenderpassdescriptor) - D3D12: [Render passes](https://microsoft.github.io/DirectX-Specs/d3d/RenderPasses.html) - WebGPU: [Render passes](https://developer.mozilla.org/en-US/docs/Web/API/GPUCommandEncoder/beginRenderPass) # Multi threading - Vulkan: [Secondary command buffers](https://docs.vulkan.org/spec/latest/chapters/cmdbuffers.html#commandbuffers-secondary) or [VK_RENDERING_SUSPENDING_BIT](https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingFlagBits.html) + [VK_RENDERING_RESUMING_BIT](https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingFlagBits.html) - Metal: [MTLParallelRenderCommandEncoder](https://developer.apple.com/documentation/metal/mtlparallelrendercommandencoder?language=objc) - D3D12: [D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS](https://microsoft.github.io/DirectX-Specs/d3d/RenderPasses.html#suspend-and-resume) + [D3D12_RENDER_PASS_FLAG_RESUMING_PASS](https://microsoft.github.io/DirectX-Specs/d3d/RenderPasses.html#suspend-and-resume) - WebGPU: Not possible, WebGPU is strictly single threaded # Accessing tile data - Vulkan: [VK_KHR_dynamic_rendering_local_read](https://docs.vulkan.org/features/latest/features/proposals/VK_KHR_dynamic_rendering_local_read.html), [VK_EXT_shader_tile_image](https://docs.vulkan.org/features/latest/features/proposals/VK_EXT_shader_tile_image.html) or (for Qualcomm) [VK_QCOM_tile_shading](https://registry.khronos.org/vulkan/specs/latest/man/html/VK_QCOM_tile_shading.html) - Metal: [Tile shaders](https://developer.apple.com/documentation/metal/rendering-a-scene-with-forward-plus-lighting-using-tile-shaders) - D3D12: [D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV](https://microsoft.github.io/DirectX-Specs/d3d/RenderPasses.html#d3d12_render_pass_beginning_access_type_preserve_local_srv) + [D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV](https://microsoft.github.io/DirectX-Specs/d3d/RenderPasses.html#d3d12_render_pass_beginning_access_type_preserve_local_srv)
Render targets that exist only in tile memory
Render passes
Multi threading
Accessing tile data