mirror of
https://github.com/johndoe6345789/SDL3CPlusPlus.git
synced 2026-04-24 13:44:58 +00:00
feat(tests): enhance initialization order tests with renderer type checks and logging improvements
This commit is contained in:
@@ -590,6 +590,17 @@ void BgfxGraphicsBackend::Initialize(void* window, const GraphicsConfig& config)
|
||||
logger_->Warn("BgfxGraphicsBackend::Initialize: Noop renderer selected; rendering disabled");
|
||||
}
|
||||
|
||||
if (logger_) {
|
||||
logger_->Trace("BgfxGraphicsBackend", "Initialize",
|
||||
"Priming bgfx with initial frame before resource creation");
|
||||
}
|
||||
const uint32_t frameNumber = bgfx::frame();
|
||||
frameCount_ = frameNumber + 1;
|
||||
if (logger_) {
|
||||
logger_->Trace("BgfxGraphicsBackend", "Initialize",
|
||||
"Prime frame complete frameNumber=" + std::to_string(frameNumber));
|
||||
}
|
||||
|
||||
bgfx::setViewClear(viewId_, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x1f1f1fff, 1.0f, 0);
|
||||
bgfx::setDebug(BGFX_DEBUG_TEXT);
|
||||
InitializeUniforms();
|
||||
|
||||
@@ -17,6 +17,29 @@
|
||||
|
||||
namespace {
|
||||
|
||||
const char* RendererTypeName(bgfx::RendererType::Enum type) {
|
||||
switch (type) {
|
||||
case bgfx::RendererType::Noop:
|
||||
return "Noop";
|
||||
case bgfx::RendererType::Vulkan:
|
||||
return "Vulkan";
|
||||
case bgfx::RendererType::OpenGL:
|
||||
return "OpenGL";
|
||||
case bgfx::RendererType::OpenGLES:
|
||||
return "OpenGLES";
|
||||
case bgfx::RendererType::Direct3D11:
|
||||
return "Direct3D11";
|
||||
case bgfx::RendererType::Direct3D12:
|
||||
return "Direct3D12";
|
||||
case bgfx::RendererType::Metal:
|
||||
return "Metal";
|
||||
case bgfx::RendererType::Count:
|
||||
return "Auto";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
class BgfxInitializationOrderTest : public ::testing::Test {
|
||||
protected:
|
||||
void TearDown() override {
|
||||
@@ -32,7 +55,13 @@ TEST_F(BgfxInitializationOrderTest, CreateTexture_BeforeFrame_ProducesInvalidHan
|
||||
init.resolution.width = 1024;
|
||||
init.resolution.height = 768;
|
||||
init.resolution.reset = BGFX_RESET_NONE;
|
||||
ASSERT_TRUE(bgfx::init(init));
|
||||
if (!bgfx::init(init)) {
|
||||
GTEST_SKIP() << "bgfx::init failed";
|
||||
}
|
||||
const auto rendererType = bgfx::getRendererType();
|
||||
if (rendererType != bgfx::RendererType::Noop) {
|
||||
GTEST_SKIP() << "Noop renderer unavailable; actual=" << RendererTypeName(rendererType);
|
||||
}
|
||||
|
||||
// ❌ WRONG: Create texture BEFORE first frame
|
||||
// NOTE: With Noop renderer this might still create valid handles,
|
||||
|
||||
Reference in New Issue
Block a user