Specifies flags that control ID3D12GraphicsCommandList::FlushPipelineX and ID3D12CommandQueue::SignalX.
typedef enum D3D12XBOX_FLUSH
{
D3D12XBOX_FLUSH_NONE = 0x00000000,
// Top of pipe:
D3D12XBOX_FLUSH_TOP_BASE_COHERENCY = 0x00000001,
D3D12XBOX_FLUSH_TOP_COLOR_BLOCK_COHERENCY = 0x00000040,
D3D12XBOX_FLUSH_TOP_DEPTH_BLOCK_COHERENCY = 0x00004000,
D3D12XBOX_FLUSH_TOP_COLOR_BLOCK_INVALIDATE = 0x02000000,
D3D12XBOX_FLUSH_TOP_DEPTH_BLOCK_INVALIDATE = 0x04000000,
D3D12XBOX_FLUSH_TOP_TEXTURE_L1_INVALIDATE = 0x00400000,
D3D12XBOX_FLUSH_TOP_TEXTURE_L2_INVALIDATE = 0x00800000,
D3D12XBOX_FLUSH_TOP_TEXTURE_L2_WRITEBACK = 0x00040000,
D3D12XBOX_FLUSH_TOP_KCACHE_INVALIDATE = 0x08000000,
D3D12XBOX_FLUSH_TOP_ICACHE_INVALIDATE = 0x20000000,
D3D12XBOX_FLUSH_TOP_SELECT_ENGINE_PFP = 0x80000000,
D3D12XBOX_FLUSH_TOP_PFP_SYNC_ME = 0x40000000,
// Bottom of pipe:
D3D12XBOX_FLUSH_BOP_COLOR_BLOCK_DATA = 0x00000004,
D3D12XBOX_FLUSH_BOP_DEPTH_BLOCK_DATA = 0x00000008,
D3D12XBOX_FLUSH_BOP_COLOR_BLOCK_META = 0x00000010,
D3D12XBOX_FLUSH_BOP_DEPTH_BLOCK_META = 0x00000020,
D3D12XBOX_FLUSH_BOP_TEXTURE_L1_INVALIDATE = 0x00001000,
D3D12XBOX_FLUSH_BOP_TEXTURE_L2_INVALIDATE = 0x00002000,
D3D12XBOX_FLUSH_BOP_TEXTURE_L2_WRITEBACK = 0x00000800,
D3D12XBOX_FLUSH_BOP_CS_PARTIAL = 0x00020000,
D3D12XBOX_FLUSH_BOP_VS_PARTIAL = 0x00100000,
D3D12XBOX_FLUSH_BOP_PS_PARTIAL = 0x01000000,
D3D12XBOX_FLUSH_BOP_STREAMOUT = 0x00000400,
// Idle:
D3D12XBOX_FLUSH_IDLE = 0x00200000,
// Masks:
D3D12XBOX_FLUSH_TOP_MASK = D3D12XBOX_FLUSH_TOP_BASE_COHERENCY|D3D12XBOX_FLUSH_TOP_COLOR_BLOCK_COHERENCY|D3D12XBOX_FLUSH_TOP_DEPTH_BLOCK_COHERENCY|D3D12XBOX_FLUSH_TOP_COLOR_BLOCK_INVALIDATE|D3D12XBOX_FLUSH_TOP_DEPTH_BLOCK_INVALIDATE|D3D12XBOX_FLUSH_TOP_TEXTURE_L1_INVALIDATE|D3D12XBOX_FLUSH_TOP_TEXTURE_L2_INVALIDATE|D3D12XBOX_FLUSH_TOP_TEXTURE_L2_WRITEBACK|D3D12XBOX_FLUSH_TOP_KCACHE_INVALIDATE|D3D12XBOX_FLUSH_TOP_ICACHE_INVALIDATE|D3D12XBOX_FLUSH_TOP_SELECT_ENGINE_PFP|D3D12XBOX_FLUSH_TOP_PFP_SYNC_ME,
D3D12XBOX_FLUSH_BOP_MASK = D3D12XBOX_FLUSH_BOP_COLOR_BLOCK_DATA|D3D12XBOX_FLUSH_BOP_DEPTH_BLOCK_DATA|D3D12XBOX_FLUSH_BOP_COLOR_BLOCK_META|D3D12XBOX_FLUSH_BOP_DEPTH_BLOCK_META|D3D12XBOX_FLUSH_BOP_TEXTURE_L1_INVALIDATE|D3D12XBOX_FLUSH_BOP_TEXTURE_L2_INVALIDATE|D3D12XBOX_FLUSH_BOP_TEXTURE_L2_WRITEBACK|D3D12XBOX_FLUSH_BOP_CS_PARTIAL|D3D12XBOX_FLUSH_BOP_VS_PARTIAL|D3D12XBOX_FLUSH_BOP_PS_PARTIAL|D3D12XBOX_FLUSH_BOP_STREAMOUT,
D3D12XBOX_FLUSH_TOP_COMPUTE_MASK = D3D12XBOX_FLUSH_TOP_TEXTURE_L1_INVALIDATE|D3D12XBOX_FLUSH_TOP_TEXTURE_L2_INVALIDATE|D3D12XBOX_FLUSH_TOP_TEXTURE_L2_WRITEBACK|D3D12XBOX_FLUSH_TOP_KCACHE_INVALIDATED|3D12XBOX_FLUSH_TOP_ICACHE_INVALIDATE,
D3D12XBOX_FLUSH_BOP_COMPUTE_MASK = D3D12XBOX_FLUSH_BOP_TEXTURE_L1_INVALIDATE|D3D12XBOX_FLUSH_BOP_TEXTURE_L2_INVALIDATE|D3D12XBOX_FLUSH_BOP_TEXTURE_L2_WRITEBACK|D3D12XBOX_FLUSH_BOP_CS_PARTIAL
} D3D12XBOX_FLUSH;
| Constant | Description |
|---|---|
| D3D12XBOX_FLUSH_NONE | No flags. |
| D3D12XBOX_FLUSH_TOP_BASE_COHERENCY | This enumeration constant, for top of pipe, is equivalent to the following set of four D3D11_FLUSH enumeration constants:
|
| D3D12XBOX_FLUSH_TOP_COLOR_BLOCK_COHERENCY | Checks whether any in-flight rendering to RenderTarget0 through RenderTarget7 is being done within the specified range, before continuing on and flushing the caches. This checking ensures color buffer cache coherence. Coherency means the contents in different memory caches are the same. When something is non-coherent, that means values might be different in different caches, which is bad. This enumeration constant is equivalent to setting the following group of enumeration constants in D3D11:
|
| D3D12XBOX_FLUSH_TOP_DEPTH_BLOCK_COHERENCY | Checks whether the depth buffer or HTILE surface are in the specified range, before flushing any caches. (Corresponds to D3D11_FLUSH_ENSURE_DB_COHERENCY in D3D11_FLUSH.) |
| D3D12XBOX_FLUSH_TOP_COLOR_BLOCK_INVALIDATE | This flag clears and invalidates all cache lines in the color cache. |
| D3D12XBOX_FLUSH_TOP_DEPTH_BLOCK_INVALIDATE | Clears and invalidates all cache lines in the depth cache. |
| D3D12XBOX_FLUSH_TOP_TEXTURE_L1_INVALIDATE | Clears and invalidates all cache lines in the texture Level 1 cache. |
| D3D12XBOX_FLUSH_TOP_TEXTURE_L2_INVALIDATE | Clears and invalidates all cache lines in the texture Level 2 cache. |
| D3D12XBOX_FLUSH_TOP_TEXTURE_L2_WRITEBACK | For Writeback or Invalidate, this flag flushes the Level 2 texture cache. Anything that needs to be written back gets written back immediately, but this flag doesn't necessarily invalidate the cache lines. |
| D3D12XBOX_FLUSH_TOP_KCACHE_INVALIDATE | Clears and invalidates all cache lines in the constant cache. KCACHE is the shader's scalar vector cache. |
| D3D12XBOX_FLUSH_TOP_ICACHE_INVALIDATE | Clears and invalidates all cache lines in the shader instruction cache. ICACHE is the shader program cache. |
| D3D12XBOX_FLUSH_TOP_SELECT_ENGINE_PFP | Causes the invalidation to occur earlier, in the pre-fetch parser (PFP) engine, instead of in the Memory Engine (ME). This flag performs the cache flushes that are specified by the top-of-pipe flags above, by using the pre-fetch parser engine (PFP) instead of the Memory Engine (ME). (Corresponds to the flag D3D11_FLUSH_ENGINE_PFP in the D3D11_FLUSH enumeration.) |
| D3D12XBOX_FLUSH_TOP_PFP_SYNC_ME | Synchronizes command processor PFP with ME. (Corresponds to the D3D11X_GPU_PIPELINED_EVENT_PFP_SYNC_ME enumeration constant.) |
| D3D12XBOX_FLUSH_BOP_COLOR_BLOCK_DATA | Flush Color Block data. (Corresponds to the D3D11X_GPU_PIPELINED_EVENT enumeration.) |
| D3D12XBOX_FLUSH_BOP_DEPTH_BLOCK_DATA | Flushes Depth Block data. |
| D3D12XBOX_FLUSH_BOP_COLOR_BLOCK_META | Flushes Color Block metadata. |
| D3D12XBOX_FLUSH_BOP_DEPTH_BLOCK_META | Flushes Depth Block metadata. |
| D3D12XBOX_FLUSH_BOP_TEXTURE_L1_INVALIDATE | Clears and invalidates all cache lines in the texture Level 1 cache. |
| D3D12XBOX_FLUSH_BOP_TEXTURE_L2_INVALIDATE | Clears and invalidates all cache lines in the texture Level 2 cache. |
| D3D12XBOX_FLUSH_BOP_TEXTURE_L2_WRITEBACK | For Writeback or Invalidate, this flag flushes the Level 2 texture cache. Anything that needs to be written back gets written back immediately, but this flag doesn't necessarily invalidate the cache lines. |
| D3D12XBOX_FLUSH_BOP_CS_PARTIAL | Ensures all CS have finished running before processing more commands through the command processor (CP). (Corresponds to D3D11X_GPU_PIPELINED_EVENT_CS_PARTIAL_FLUSH in the D3D11X_GPU_PIPELINED_EVENT enumeration.) |
| D3D12XBOX_FLUSH_BOP_VS_PARTIAL | Ensures all VS have finished running before processing more commands through the command processor (CP). (Corresponds to D3D11X_GPU_PIPELINED_EVENT_VS_PARTIAL_FLUSH in the D3D11X_GPU_PIPELINED_EVENT enumeration.) |
| D3D12XBOX_FLUSH_BOP_PS_PARTIAL | Ensures all PS have finished running before processing more commands through the command processor (CP). (Corresponds to D3D11X_GPU_PIPELINED_EVENT_PS_PARTIAL_FLUSH in the D3D11X_GPU_PIPELINED_EVENT enumeration.) |
| D3D12XBOX_FLUSH_BOP_STREAMOUT | Flushes the stream out caches. (Corresponds to D3D11X_GPU_PIPELINED_EVENT_STREAMOUT_FLUSH in the D3D11X_GPU_PIPELINED_EVENT enumeration.) |
| D3D12XBOX_FLUSH_IDLE | Forces the GPU to wait until the GPU is idle, before flushing. This flag is not supported on compute command lists. (Corresponds to ID3D11DeviceContextX::InsertWaitUntilIdle in D3D11.) |
| D3D12XBOX_FLUSH_TOP_MASK | Combines all Top Of Pipe (_TOP_) flags. |
| D3D12XBOX_FLUSH_BOP_MASK | Combines all Bottom Of Pipe (_BOP_) flags. |
| D3D12XBOX_FLUSH_TOP_COMPUTE_MASK | Combines all compute flags that are for Top Of Pipe. |
| D3D12XBOX_FLUSH_BOP_COMPUTE_MASK | Combines all compute flags that are for Bottom Of Pipe. |
This enumeration is used by the following API items:
TOP means top of pipe. BOP means bottom of pipe.
In D3D11, ID3D11DeviceContextX::FlushGpuCacheRange uses the D3D11_FLUSH enumeration, which largely corresponds to this D3D12 enumeration.
Header: Declared in d3d12_x.h.