While investigating a GPU crash I was wondering why both Breadcrumps and DRED logs do not (always) show the to-be-filled-in information.
For example some actual log messages:
Breadcrumbs: > PostProcessMaterial %dx%d Material=%s [Active]
or
LogD3D12RHI: Error: Op: 41, BeginEvent [Translucency(%s) %dx%d]
though this one worked:
Breadcrumbs: SceneCapture BP_SomeTestBP_C_4 [Not started]
Can we resolve this somehow?
Hi,
I did some investigation and believe I found what is causing this issue. There seems to be a typo in the code for formatting RDG events on line 345 in Engine\Source\Runtime\RenderCore\Public\RenderGraphEvent.h where #__VA_ARGS__ should actually be ##__VA_ARGS__.
[Image Removed]I will file a bug report for that with Epic. You can make this fix in your project, if you are building the engine from source.
Let me know how that goes or if you have any further questions.
Thanks,
Sam
Hi again,
I got into touch with Epic about this, who told me this is not a bug in the engine. The issue you see is because the format strings are only resolved when RDG_EVENTS is RDG_EVENTS_STRING_COPY. Test and shipping builds don’t resolve the format strings because it’s expensive.
#if WITH_PROFILEGPU #if UE_BUILD_TEST || UE_BUILD_SHIPPING #define RDG_EVENTS RDG_EVENTS_STRING_REF #else #define RDG_EVENTS RDG_EVENTS_STRING_COPY #endif #elif WITH_RHI_BREADCRUMBS #define RDG_EVENTS RDG_EVENTS_STRING_REF #else #define RDG_EVENTS RDG_EVENTS_NONE #endif
Thanks,
Sam