Creating tiled resources
Tiled resources are created by specifying the D3D11_RESOURCE_MISC_TILED flag when you create a resource.
Restrictions on when you can use D3D11_RESOURCE_MISC_TILED to create a resource are described in Tiled resource creation parameters.
A non-tiled resource's storage is allocated in the graphics system when the resource is created. For example, when you call ID3D11Device::CreateTexture2D to create an array of 2D textures, the graphics system allocates storage for those 2D textures. When a tiled resource is created, the graphics system doesn't allocate the storage for the resource contents. Instead, when an application creates a tiled resource, the graphics system makes an address space reservation for the tiled surface's area only, and then allows the mapping of the tiles to be controlled by the application. The "mapping" of a tile is simply the physical location in memory that a logical tile in a resource points to (or NULL for an unmapped tile). Don't confuse this concept with the notion of mapping a Direct3D resource for CPU access, which despite using the same name is completely independent. You will be able to define and change the mapping of each tile individually as needed, knowing that all tiles for a surface don't need to be mapped at a time, thereby making effective use of the amount of memory available.
This section provides more info about how to create tiled resources.
In this section
Topic | Description |
---|---|
Mappings are into a tile pool |
When a resource is created with the D3D11_RESOURCE_MISC_TILED flag, the tiles that make up the resource come from pointing at locations in a tile pool. A tile pool is a pool of memory (backed by one or more allocations behind the scenes - unseen by the application). |
Tiled resource creation parameters |
There are some constraints on the type of Direct3D resources that you can create with the D3D11_RESOURCE_MISC_TILED flag. This section provides the valid parameters for creating tiled resources. |
Address space available for tiled resources |
This section specifies the virtual address space that is available for tiled resources. |
Tile pool creation parameters |
Use the parameters in this section to define tile pools via the ID3D11Device::CreateBuffer API. |
Tiled resource cross process and device sharing |
Tile pools can be shared with other processes just like traditional resources. Tiled resources that reference tile pools can't be shared across devices and processes. But separate processes can create their own tiled resources that map to tile pools that are shared between those tiled resources. |
Operations available on tiled resources |
This section lists operations that you can perform on tiled resources. |
Operations available on tile pools |
This section lists operations that you can perform on tile pools. |
How a tiled resource's area is tiled |
When you create a tiled resource, the dimensions, format element size, and number of mipmaps and/or array slices (if applicable) determine the number of tiles that are required to back the entire surface area. |