Files
Aethera/render_3D/third_party/datoviz/testing/wrap_surface_fixture.h
T
2026-08-20 10:23:47 +08:00

77 lines
2.7 KiB
C

/*
* Copyright (c) 2021 Cyrille Rossant and contributors. All rights reserved.
* Licensed under the MIT license. See LICENSE file in the project root for details.
* SPDX-License-Identifier: MIT
*/
/*************************************************************************************************/
/* Wrap surface test helpers */
/*************************************************************************************************/
#pragma once
/*************************************************************************************************/
/* Includes */
/*************************************************************************************************/
#include "_env.h"
#include "datoviz/window.h"
#include "datoviz/window/backend.h"
/*************************************************************************************************/
/* Helpers */
/*************************************************************************************************/
/**
* Create a wrap-ready window configuration for tests.
*
* @param title window title string
* @param width logical window width
* @param height logical window height
* @return initialized window config
*/
static inline DvzWindowConfig
dvz_test_wrap_window_config(const char* title, uint32_t width, uint32_t height)
{
DvzWindowConfig cfg = dvz_window_config();
cfg.title = title;
cfg.width = width;
cfg.height = height;
cfg.visible = checkenv("DVZ_TEST_VISIBLE");
return cfg;
}
/**
* Build a DvzWindowExternalSurfaceInfo record for wrap-backend tests.
*
* @param instance Vulkan instance handle associated with the surface
* @param surface Vulkan surface handle
* @param width surface extent width
* @param height surface extent height
* @param scale_x content scale on X
* @param scale_y content scale on Y
* @param owned_by_datoviz whether Datoviz owns the surface destruction
* @return initialized external-surface record
*/
static inline DvzWindowExternalSurfaceInfo dvz_test_wrap_surface_info(
VkInstance instance, VkSurfaceKHR surface, uint32_t width, uint32_t height, float scale_x,
float scale_y, bool owned_by_datoviz)
{
DvzWindowExternalSurfaceInfo info = {
DVZ_STRUCT_INIT_FIELDS(DvzWindowExternalSurfaceInfo),
.instance = instance,
.surface = surface,
.extent = {.width = width, .height = height},
.scale_x = scale_x,
.scale_y = scale_y,
.owned_by_datoviz = owned_by_datoviz,
};
return info;
}