Finalize XCUI hosted preview texture registration flow
This commit is contained in:
@@ -344,11 +344,9 @@ void Application::ShutdownRenderer() {
|
|||||||
|
|
||||||
void Application::DestroyHostedPreviewSurfaces() {
|
void Application::DestroyHostedPreviewSurfaces() {
|
||||||
for (HostedPreviewOffscreenSurface& previewSurface : m_hostedPreviewSurfaces) {
|
for (HostedPreviewOffscreenSurface& previewSurface : m_hostedPreviewSurfaces) {
|
||||||
if (previewSurface.imguiCpuHandle.ptr != 0) {
|
if (previewSurface.textureRegistration.cpuHandle.ptr != 0) {
|
||||||
if (m_windowCompositor != nullptr) {
|
if (m_windowCompositor != nullptr) {
|
||||||
m_windowCompositor->FreeTextureDescriptor(
|
m_windowCompositor->FreeTextureDescriptor(previewSurface.textureRegistration);
|
||||||
previewSurface.imguiCpuHandle,
|
|
||||||
previewSurface.imguiGpuHandle);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ShutdownAndDelete(previewSurface.colorView);
|
ShutdownAndDelete(previewSurface.colorView);
|
||||||
@@ -436,18 +434,14 @@ bool Application::EnsureHostedPreviewSurface(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (previewSurface.imguiCpuHandle.ptr != 0) {
|
if (previewSurface.textureRegistration.cpuHandle.ptr != 0) {
|
||||||
if (m_windowCompositor != nullptr) {
|
if (m_windowCompositor != nullptr) {
|
||||||
m_windowCompositor->FreeTextureDescriptor(
|
m_windowCompositor->FreeTextureDescriptor(previewSurface.textureRegistration);
|
||||||
previewSurface.imguiCpuHandle,
|
|
||||||
previewSurface.imguiGpuHandle);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ShutdownAndDelete(previewSurface.colorView);
|
ShutdownAndDelete(previewSurface.colorView);
|
||||||
ShutdownAndDelete(previewSurface.colorTexture);
|
ShutdownAndDelete(previewSurface.colorTexture);
|
||||||
previewSurface.imguiCpuHandle = {};
|
previewSurface.textureRegistration = {};
|
||||||
previewSurface.imguiGpuHandle = {};
|
|
||||||
previewSurface.imguiTextureId = {};
|
|
||||||
previewSurface.width = width;
|
previewSurface.width = width;
|
||||||
previewSurface.height = height;
|
previewSurface.height = height;
|
||||||
previewSurface.colorState = ::XCEngine::RHI::ResourceStates::Common;
|
previewSurface.colorState = ::XCEngine::RHI::ResourceStates::Common;
|
||||||
@@ -484,14 +478,10 @@ bool Application::EnsureHostedPreviewSurface(
|
|||||||
!m_windowCompositor->CreateTextureDescriptor(
|
!m_windowCompositor->CreateTextureDescriptor(
|
||||||
m_windowRenderer.GetRHIDevice(),
|
m_windowRenderer.GetRHIDevice(),
|
||||||
previewSurface.colorTexture,
|
previewSurface.colorTexture,
|
||||||
&previewSurface.imguiCpuHandle,
|
previewSurface.textureRegistration)) {
|
||||||
&previewSurface.imguiGpuHandle,
|
|
||||||
&previewSurface.imguiTextureId)) {
|
|
||||||
ShutdownAndDelete(previewSurface.colorView);
|
ShutdownAndDelete(previewSurface.colorView);
|
||||||
ShutdownAndDelete(previewSurface.colorTexture);
|
ShutdownAndDelete(previewSurface.colorTexture);
|
||||||
previewSurface.imguiCpuHandle = {};
|
previewSurface.textureRegistration = {};
|
||||||
previewSurface.imguiGpuHandle = {};
|
|
||||||
previewSurface.imguiTextureId = {};
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -849,14 +839,9 @@ void Application::RenderQueuedHostedPreviews(
|
|||||||
drainStats.renderedDrawListCount += overlayStats.drawListCount;
|
drainStats.renderedDrawListCount += overlayStats.drawListCount;
|
||||||
drainStats.renderedCommandCount += overlayStats.renderedCommandCount;
|
drainStats.renderedCommandCount += overlayStats.renderedCommandCount;
|
||||||
drainStats.skippedCommandCount += overlayStats.skippedCommandCount;
|
drainStats.skippedCommandCount += overlayStats.skippedCommandCount;
|
||||||
::XCEngine::UI::UITextureHandle previewTexture = {};
|
|
||||||
previewTexture.nativeHandle = static_cast<std::uintptr_t>(previewSurface.imguiTextureId);
|
|
||||||
previewTexture.width = previewSurface.width;
|
|
||||||
previewTexture.height = previewSurface.height;
|
|
||||||
previewTexture.kind = ::XCEngine::UI::UITextureHandleKind::ImGuiDescriptor;
|
|
||||||
m_hostedPreviewSurfaceRegistry.UpdateSurface(
|
m_hostedPreviewSurfaceRegistry.UpdateSurface(
|
||||||
queuedFrame.debugName,
|
queuedFrame.debugName,
|
||||||
previewTexture,
|
previewSurface.textureRegistration.texture,
|
||||||
::XCEngine::UI::UIRect(
|
::XCEngine::UI::UIRect(
|
||||||
0.0f,
|
0.0f,
|
||||||
0.0f,
|
0.0f,
|
||||||
|
|||||||
Reference in New Issue
Block a user