microsoft / microsoft/DirectX-Graphics-Samples
VSGD frame capture with ExecuteIndirect modifying root constants will not open
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 6.8k
- Forks
- 2.2k
- PR merge metrics
- No merged PRs in 30d
Description
Hello!
I am running into pretty much the same issue described here https://github.com/Microsoft/DirectX-Graphics-Samples/issues/158. According to the thread, it is supposed to be fixed in Windows Insider Fast build (14361). I am running Windows Insider build (14379.rs1_release.160627-1607) and have VS of version 14.0.25421.03 with update 3.
During the capture, VS will crash. Before the crash occurs, I get in VS output window the following warning:
"D3D12 WARNING: ID3D12Resource::ID3D12Resource::Map: pReadRange is NULL and the heap page property is WRITE_BACK. This can be an indicator of inefficiencies that will result on mobile systems, as the range should be as tight as possible. But, it is also possible the range must encompass the whole subresource.A NULL pReadRange parameter indicates all resource memory will be read by the CPU. [ EXECUTION WARNING #930: MAP_INVALID_NULLRANGE]
D3D12: BREAK enabled for the previous message, which was: [ WARNING EXECUTION #930: MAP_INVALID_NULLRANGE ]"
Below is VS callstack with downloaded debug symbols:
KernelBase.dll!_RaiseException@16() Unknown
DXGIDebug.dll!CInfoQueue::AddMessage(struct _GUID,void *,enum DXGI_INFO_QUEUE_MESSAGE_CATEGORY,enum DXGI_INFO_QUEUE_MESSAGE_SEVERITY,int,char const *) Unknown
d3d12SDKLayers.dll!CInfoQueue::AddMessage(enum D3D12_MESSAGE_CATEGORY,enum D3D12_MESSAGE_SEVERITY,enum D3D12_MESSAGE_ID,char const *) Unknown
d3d12SDKLayers.dll!NDebug::CInterfaceSentinel::CFunctionSentinel::ReportMessageImpl(enum D3D12_MESSAGE_ID,char const *,bool,char *) Unknown
d3d12SDKLayers.dll!NDebug::CInterfaceSentinel::CFunctionSentinel::operator()(enum D3D12_MESSAGE_ID,char const *,...) Unknown
d3d12SDKLayers.dll!ValidateMapOrUnmapCall(class NDebug::CInterfaceSentinel::CFunctionSentinel &,struct ResourceValidationInfo const &,struct DeviceValidationInfo const &,unsigned int,struct D3D12_RANGE const *,void * *,bool) Unknown
d3d12SDKLayers.dll!NDebug::CResource::Map(unsigned int,struct D3D12_RANGE const *,void * *) Unknown
DXCaptureReplay.dll!GRFXTool::D3D12ResourceReadback::Initialize(class GRFXTool::CAutoExecutionContext &,struct DXSerialization::SResourceCurrentUsage const *,enum D3D12_HEAP_TYPE,unsigned int,struct ID3D12Resource *) Unknown
DXCaptureReplay.dll!GRFXTool::ResourceCapture::ResourceCaptureHelper12::CaptureResourceWithInitialData<class <lambda_dc89b3b6b6a240fe803f095241547d71> >(class <lambda_dc89b3b6b6a240fe803f095241547d71>) Unknown
DXCaptureReplay.dll!GRFXTool::ResourceCapture::DXGISwapChainBufferCapture(class GRFXTool::ToolResource *,class GRFXTool::CaptureContext &) Unknown
DXCaptureReplay.dll!GRFXTool::CaptureToolLayer::WriteRecreation(class GRFXTool::CaptureContext &,class GRFXTool::OutputSerializer *,class GRFXTool::ToolResource *,struct GRFXTool::RecreateInfo const &) Unknown
DXCaptureReplay.dll!GRFXTool::CaptureToolLayer::CheckResourceForRecreation(class GRFXTool::ToolResource *,bool) Unknown
DXCaptureReplay.dll!GRFXTool::DependencyTracker::MarkDependency(class GRFXTool::ToolResource *) Unknown
DXCaptureReplay.dll!GRFXTool::ResourceCapture::ID3D12CommandListDependency(class GRFXTool::ToolResource *,class GRFXTool::DependencyTracker &) Unknown
DXCaptureReplay.dll!GRFXTool::CaptureToolLayer::WriteRecreation(class GRFXTool::CaptureContext &,class GRFXTool::OutputSerializer *,class GRFXTool::ToolResource *,struct GRFXTool::RecreateInfo const &) Unknown
DXCaptureReplay.dll!GRFXTool::CaptureToolLayer::CheckResourceForRecreation(class GRFXTool::ToolResource *,bool) Unknown
DXCaptureReplay.dll!GRFXTool::CaptureToolLayer::OnOutputResource(class GRFXTool::ToolResource *,bool) Unknown
DXCaptureReplay.dll!GRFXTool::SerializeRes(class GRFXTool::OutputSerializer *,struct ID2D1Device *,char const *,bool) Unknown
DXCaptureReplay.dll!GRFXTool::GeneratedCaptureWrapper::ToolD3D12GraphicsCommandListGenerated::Reset(struct ID3D12CommandAllocator *,struct ID3D12PipelineState *) Unknown
DXCaptureReplay.dll!GRFXTool::GeneratedCaptureWrapper::ToolD3D12VirtualGraphicsCommandList::Reset(struct ID3D12CommandAllocator *,struct ID3D12PipelineState *) Unknown
Following the advice from the previous thread, I disabled debug layer and info queue.
I was able to make capture but still no luck with opening it. I am getting the error
"The Graphics Diagnostics engine has encountered a fatal error. Please try to reopen the document again, and if the problem persists, please contact the support team".
I am not able to save *.vsglog file since "Save Seleted Items As" menu option is disabled in File menu. I have uploaded *.diagsession file in case it is sufficient https://dl.dropboxusercontent.com/u/96151288/CaptureReport.diagsession
Many thanks!
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the VSGD capture described in the issue and review the reported Visual Studio call stack, especially the DXCaptureReplay resource-capture path. The issue names no repository file, test, or entry point; done would be reopening the capture without the Graphics Diagnostics fatal error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100