Expand description
Texture Trackers
Texture trackers are significantly more complicated than the buffer trackers because textures can be in a βcomplexβ state where each individual subresource can potentially be in a different state from every other subtresource. These complex states are stored separately from the simple states because they are signifignatly more difficult to track and most resources spend the vast majority of their lives in simple states.
There are two special texture usages: UNKNOWN
and UNINITIALIZED
.
UNKNOWN
is only used in complex states and is used to signify that the complex state does not know anything about those subresources. It cannot leak into transitions, it is invalid to transition into UNKNOWN state.UNINITIALIZED
is used in both simple and complex states to mean the texture is known to be in some undefined state. Any transition away from UNINITIALIZED will treat the contents as junk.
Structs§
- Complex
Texture πState Represents the complex state of textures where every subresource is potentially in a different state. - Device
Texture πTracker Stores all texture state within a device. - Specifies a particular set of subresources in a texture.
- Texture
State πSet Container for corresponding simple and complex texture states. - Texture
Tracker πStores all texture state within a command buffer. - Texture
Usage πScope Stores all texture state within a single usage scope. - Stores a bind groupβs texture views + their usages (within the bind group).
Enums§
- Either
Iter πAn iterator adapter that can store two different iterator types. - Single
OrMany πStates Container that signifies storing both different things if there is a single state or many different states involved in the operation. - Texture
State πProvider A source of texture state.
Traits§
Functions§
- barrier π β
- insert π β
- insert_
or_ π βbarrier_ update If the resource isnβt tracked - insert_
or_ π βmerge Does an insertion operation if the index isnβt tracked in the current metadata, otherwise merges the given state with the current state. If the merging would cause a conflict, returns that usage conflict. - merge π β
- update π β