Split XCUI hosted preview ImGui presenter seam
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "XCUIBackend/ImGuiXCUIHostedPreviewPresenter.h"
|
||||
#include "XCUIBackend/XCUIHostedPreviewPresenter.h"
|
||||
|
||||
#include <XCEngine/UI/DrawData.h>
|
||||
@@ -46,6 +47,18 @@ void PrepareImGui(float width = 1024.0f, float height = 768.0f) {
|
||||
io.Fonts->SetTexID(static_cast<ImTextureID>(1));
|
||||
}
|
||||
|
||||
XCEngine::UI::UITextureHandle MakeHostedPreviewTextureHandle(
|
||||
std::uintptr_t nativeHandle,
|
||||
std::uint32_t width,
|
||||
std::uint32_t height) {
|
||||
XCEngine::UI::UITextureHandle texture = {};
|
||||
texture.nativeHandle = nativeHandle;
|
||||
texture.width = width;
|
||||
texture.height = height;
|
||||
texture.kind = XCEngine::UI::UITextureHandleKind::ImGuiDescriptor;
|
||||
return texture;
|
||||
}
|
||||
|
||||
TEST(XCUIHostedPreviewPresenterTest, PresentReturnsFalseAndClearsStatsWhenFrameHasNoDrawData) {
|
||||
ImGuiContextScope contextScope;
|
||||
PrepareImGui();
|
||||
@@ -216,14 +229,14 @@ TEST(XCUIHostedPreviewPresenterTest, QueuedNativePresenterFallsBackLogicalSizeTo
|
||||
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"XCUI Demo",
|
||||
static_cast<ImTextureID>(static_cast<intptr_t>(11)),
|
||||
640u,
|
||||
360u,
|
||||
MakeHostedPreviewTextureHandle(11u, 640u, 360u),
|
||||
XCEngine::UI::UIRect(0.0f, 0.0f, 320.0f, 180.0f));
|
||||
|
||||
ASSERT_TRUE(presenter->TryGetSurfaceImage("XCUI Demo", image));
|
||||
EXPECT_TRUE(image.IsValid());
|
||||
EXPECT_EQ(image.textureId, static_cast<ImTextureID>(static_cast<intptr_t>(11)));
|
||||
EXPECT_EQ(image.texture.nativeHandle, 11u);
|
||||
EXPECT_EQ(image.texture.width, 640u);
|
||||
EXPECT_EQ(image.texture.height, 360u);
|
||||
EXPECT_FLOAT_EQ(image.uvMin.x, 0.0f);
|
||||
EXPECT_FLOAT_EQ(image.uvMin.y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(image.uvMax.x, 0.5f);
|
||||
@@ -324,9 +337,7 @@ TEST(XCUIHostedPreviewPresenterTest, SurfaceRegistryIgnoresUnnamedQueuedFramesAn
|
||||
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"XCUI Demo",
|
||||
static_cast<ImTextureID>(static_cast<intptr_t>(13)),
|
||||
800u,
|
||||
600u,
|
||||
MakeHostedPreviewTextureHandle(13u, 800u, 600u),
|
||||
XCEngine::UI::UIRect(0.0f, 0.0f, 400.0f, 300.0f));
|
||||
ASSERT_EQ(surfaceRegistry.GetDescriptors().size(), 1u);
|
||||
|
||||
@@ -342,14 +353,14 @@ TEST(XCUIHostedPreviewPresenterTest, SurfaceRegistryExposesImageUvForRenderedCan
|
||||
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"XCUI Demo",
|
||||
static_cast<ImTextureID>(static_cast<intptr_t>(7)),
|
||||
1024u,
|
||||
768u,
|
||||
MakeHostedPreviewTextureHandle(7u, 1024u, 768u),
|
||||
XCEngine::UI::UIRect(128.0f, 96.0f, 512.0f, 384.0f));
|
||||
|
||||
ASSERT_TRUE(surfaceRegistry.TryGetSurfaceImage("XCUI Demo", image));
|
||||
EXPECT_TRUE(image.IsValid());
|
||||
EXPECT_EQ(image.textureId, static_cast<ImTextureID>(static_cast<intptr_t>(7)));
|
||||
EXPECT_EQ(image.texture.nativeHandle, 7u);
|
||||
EXPECT_EQ(image.texture.width, 1024u);
|
||||
EXPECT_EQ(image.texture.height, 768u);
|
||||
EXPECT_EQ(image.surfaceWidth, 1024u);
|
||||
EXPECT_EQ(image.surfaceHeight, 768u);
|
||||
EXPECT_FLOAT_EQ(image.uvMin.x, 0.125f);
|
||||
@@ -400,15 +411,15 @@ TEST(XCUIHostedPreviewPresenterTest, SurfaceRegistryTracksQueuedFrameMetadataAlo
|
||||
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"XCUI Demo",
|
||||
static_cast<ImTextureID>(static_cast<intptr_t>(9)),
|
||||
1024u,
|
||||
512u,
|
||||
MakeHostedPreviewTextureHandle(9u, 1024u, 512u),
|
||||
XCEngine::UI::UIRect(128.0f, 64.0f, 320.0f, 160.0f));
|
||||
|
||||
ASSERT_TRUE(surfaceRegistry.TryGetSurfaceDescriptor("XCUI Demo", descriptor));
|
||||
EXPECT_TRUE(descriptor.queuedThisFrame);
|
||||
EXPECT_TRUE(descriptor.image.IsValid());
|
||||
EXPECT_EQ(descriptor.image.textureId, static_cast<ImTextureID>(static_cast<intptr_t>(9)));
|
||||
EXPECT_EQ(descriptor.image.texture.nativeHandle, 9u);
|
||||
EXPECT_EQ(descriptor.image.texture.width, 1024u);
|
||||
EXPECT_EQ(descriptor.image.texture.height, 512u);
|
||||
EXPECT_FLOAT_EQ(descriptor.image.uvMin.x, 0.125f);
|
||||
EXPECT_FLOAT_EQ(descriptor.image.uvMin.y, 0.125f);
|
||||
EXPECT_FLOAT_EQ(descriptor.image.uvMax.x, 0.4375f);
|
||||
@@ -427,9 +438,7 @@ TEST(XCUIHostedPreviewPresenterTest, SurfaceRegistryRejectsInvalidSurfaceUpdates
|
||||
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"XCUI Demo",
|
||||
static_cast<ImTextureID>(static_cast<intptr_t>(17)),
|
||||
512u,
|
||||
256u,
|
||||
MakeHostedPreviewTextureHandle(17u, 512u, 256u),
|
||||
XCEngine::UI::UIRect(64.0f, 32.0f, 256.0f, 128.0f));
|
||||
|
||||
ASSERT_TRUE(surfaceRegistry.TryGetSurfaceDescriptor("XCUI Demo", descriptor));
|
||||
@@ -438,25 +447,21 @@ TEST(XCUIHostedPreviewPresenterTest, SurfaceRegistryRejectsInvalidSurfaceUpdates
|
||||
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"XCUI Demo",
|
||||
ImTextureID{},
|
||||
512u,
|
||||
256u,
|
||||
XCEngine::UI::UITextureHandle{},
|
||||
XCEngine::UI::UIRect(0.0f, 0.0f, 128.0f, 64.0f));
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"",
|
||||
static_cast<ImTextureID>(static_cast<intptr_t>(19)),
|
||||
512u,
|
||||
256u,
|
||||
MakeHostedPreviewTextureHandle(19u, 512u, 256u),
|
||||
XCEngine::UI::UIRect(0.0f, 0.0f, 128.0f, 64.0f));
|
||||
surfaceRegistry.UpdateSurface(
|
||||
"XCUI Demo",
|
||||
static_cast<ImTextureID>(static_cast<intptr_t>(21)),
|
||||
0u,
|
||||
256u,
|
||||
MakeHostedPreviewTextureHandle(21u, 0u, 256u),
|
||||
XCEngine::UI::UIRect(0.0f, 0.0f, 128.0f, 64.0f));
|
||||
|
||||
ASSERT_TRUE(surfaceRegistry.TryGetSurfaceDescriptor("XCUI Demo", descriptor));
|
||||
EXPECT_EQ(descriptor.image.textureId, originalImage.textureId);
|
||||
EXPECT_EQ(descriptor.image.texture.nativeHandle, originalImage.texture.nativeHandle);
|
||||
EXPECT_EQ(descriptor.image.texture.width, originalImage.texture.width);
|
||||
EXPECT_EQ(descriptor.image.texture.height, originalImage.texture.height);
|
||||
EXPECT_EQ(descriptor.image.surfaceWidth, originalImage.surfaceWidth);
|
||||
EXPECT_EQ(descriptor.image.surfaceHeight, originalImage.surfaceHeight);
|
||||
EXPECT_FLOAT_EQ(descriptor.image.uvMin.x, originalImage.uvMin.x);
|
||||
@@ -504,7 +509,7 @@ TEST(XCUIHostedPreviewPresenterTest, SurfaceRegistryQueriesClearOutputForMissing
|
||||
descriptor.queuedThisFrame = true;
|
||||
|
||||
XCUIHostedPreviewSurfaceImage image = {};
|
||||
image.textureId = static_cast<ImTextureID>(static_cast<intptr_t>(23));
|
||||
image.texture = MakeHostedPreviewTextureHandle(23u, 64u, 64u);
|
||||
image.surfaceWidth = 64u;
|
||||
image.surfaceHeight = 64u;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user