Skip to content

DirectX12 engine-ImGui backend compatibility issue #8511

Open
@dmitrymosiychuck

Description

@dmitrymosiychuck

Version/Branch of Dear ImGui:

Latest Version(Any Version)

Back-ends:

imgui_impl_win32 + imgui_impl_dx12

Compiler, OS:

Windows 11, MSVS 2022

Full config/build information:

No response

Details:

Hi, I have a compatibility issue between my DX12 based renderer and ImGui DX12 backend.

My Dx12 renderer creates two(Num Frames In Flight) gpu visible descriptor heaps.
Descriptors are allocated as a growing continues list.
At the end of the frame heaps are being swapped and previous frame heap gets reset.

ImGui DX12 backend expects me to provide alloc/free callbacks.
This is easy enough to do. I could allocate new descriptors at the top of current frame heap while free function can simply do nothing(Whole heap will be reset at the end of the frame anyway).

But ImGui DX12 backend creates one descriptor at the start(presumably for font texture) and this descriptor is supposed to be valid through
application lifetime.

So this creates architectural problem...

What is the best strategy to circumvent this issue?

Should I use single descriptor heap and split it internally into two parts?
Because that would be undesirable since it will make architecture more cumbersome.

Thank you in advance!

Screenshots/Video:

No response

Minimal, Complete and Verifiable Example code:

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions