Hi Nsight team,
We have another issue when debugging our DX11 engine. There we using tiled resource buffers. It turns out that NSight showed some weird behavior on it.
(1) Live Capture:
When we capture a frame, the D3D Debug Layer outputs tons of warnings before getting crashed due to “device removed” when sliding at the scrubber:
D3D11 WARNING: ID3D11DeviceContext::CopyResource: A Copy or Update is being done to a Tiled Resource that contains at least 2014 tile mapping(s) that point to the same Tile Pool location(s) as other mappings all within the covered area. Writing results are undefined in these tiles unless the data itself is identical - different hardware may write the tiles in different orders. [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: Example tile mapping(s) for the previous message: [ {X=34, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=35, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=36, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=37, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=38, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=39, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=40, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=41, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ] [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: A Copy or Update is being done to a Tiled Resource that contains at least 2037 tile mapping(s) that point to the same Tile Pool location(s) as other mappings all within the covered area. Writing results are undefined in these tiles unless the data itself is identical - different hardware may write the tiles in different orders. [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: Example tile mapping(s) for the previous message: [ {X=11, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=12, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=13, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=14, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=15, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=16, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=17, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=18, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ] [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: A Copy or Update is being done to a Tiled Resource that contains at least 2014 tile mapping(s) that point to the same Tile Pool location(s) as other mappings all within the covered area. Writing results are undefined in these tiles unless the data itself is identical - different hardware may write the tiles in different orders. [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: Example tile mapping(s) for the previous message: [ {X=34, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=35, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=36, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=37, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=38, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=39, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=40, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ], [ {X=41, Y=0, Z=0, Subresource=0} → {TilePoolIndex=1} ] [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: A Copy or Update is being done to a Tiled Resource that contains at least 2037 tile mapping(s) that point to the same Tile Pool location(s) as other mappings all within the covered area. Writing results are undefined in these tiles unless the data itself is identical - different hardware may write the tiles in different orders. [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: Example tile mapping(s) for the previous message: [ {X=11, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=12, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=13, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=14, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=15, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=16, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=17, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ], [ {X=18, Y=0, Z=0, Subresource=0} → {TilePoolIndex=127} ] [ EXECUTION WARNING #3146133: DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA]
D3D11 WARNING: ID3D11DeviceContext::CopyResource: A Copy or Update is being done on a Tiled Resource that contains at least 11 tile mapping(s) last accessed through a different Tiled Resource or subresource sharing mappings. The TiledResourceBarrier API must be called between switching Tiled Resources like this otherwise rendering results are undefined (including possible device reset on some hardware). Hardware/drivers may not notice that there is a dependency between the resources due to a shared mapping that requires operations to remain ordered. The TiledResourceBarrier API identifies which Tiled Resources before and after the barrier could be sharing mappings so hardware/drivers must complete operations before the barrier before proceeding to operations afterwards. NULL can be specified as the Tiled Resource parameters for before and/or after the barrier to signify that all accesses to Tiled Resources issued before the barrier must complete beforehand and/or all accesses to Tiled Resources issued after the barrier can only start after the barrier. If it is known the GPU is finished with the operations on the previous tile mappings (e.g. the results have been observed) AND old tile mappings have been removed, then this message can be safely ignored since there is no synchronization issue (something the debug layer cannot tell). [ EXECUTION WARNING #3146140: NEED_TO_CALL_TILEDRESOURCEBARRIER]
(2) C++ Capture:
The c++ capture of a frame (including usage of a tiled resource buffer) running fine. But the generated output includes initial data at the DX11Ctx::CreateBuffer() call, which is not allowed on buffers created with D3D11_RESOURCE_MISC_TILED flag. This leads to a crash when starting the compiled Capture Program.
Any ideas on that?
Unfortunately I have not the possibility to upload bigger zip files. If you want I can upload my caputure elsewhere.
Cheers,
René